رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آیا توی ویو نمیتوان به متدهای کنترلر دسترسی داشت؟
#1
سلام

آیا توی ویو نمیتوان به متدهای کنترلر دسترسی داشت؟
من بصورت زیر عمل کردم و پیام خطا گرفتم.
کنترلر:

class MyController extends Controller{

   public function init() {
       parent::init();
       $this->layout= 'main';
   }

   public function debug($array,$exit = true) {
       echo '<meta charset="utf-8" />';
       echo '<div class="well" style="direction:ltr;text-align:left;">';
       VarDumper::dump($array,10,true); //10 for into array and true for highlight
       echo '</div>';
       if($exit){
           Yii::$app->end();
       }
   }

}

ویو:

$this->debug($model,false);

همین کد رو وقتی توی کنترلر استفاده میکنم اجرا میشه.

public function actionView($id) {
   $model=$this->loadModel($id);
   $this->debug($model);
   return $this->render('view', ['model'=>$model]);
}

متشکرم
پاسخ
تشکر شده توسط:
#2
به اینجا یه نگاه بندازین
way-to-call-controller-method-in-view-yii2
پاسخ
تشکر شده توسط: abdollah110110
#3
بهتره برای کارهای جانبی خودتون، یک کلاس مجزا بنویسید و از اون استفاده کنید نه اینکه به کنترلر دسترسی پیدا کنید. مثلاً این کد رو توی مسیر components (پوشه اون رو توی پروژه بسازین) بنویسید:
<?php
namespace appcomponents;
use Yii;
use yiihelpersVarDumper;

class Tools
{
    public static function debug($var, $exit = false)
    {
        echo '<meta charset="utf-8" />';
        echo '<div class="well" style="direction:ltr;text-align:left;">';
        VarDumper::dump($array, 10, true);
        echo '</div>';
        if($exit) {
            Yii::$app->end();
        }
    }
}

حالا توی برنامه با appcomponentsTools::debug کار کنید. مثال:
use appcomponents;
...
Tools::debug($model->attributes);
پاسخ
تشکر شده توسط: abdollah110110




کاربران در حال بازدید این موضوع: 1 مهمان