تالار گفتمان nCIS.ir

نسخه‌ی کامل: آیا توی ویو نمیتوان به متدهای کنترلر دسترسی داشت؟
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام

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

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]);
}

متشکرم
به اینجا یه نگاه بندازین
way-to-call-controller-method-in-view-yii2
بهتره برای کارهای جانبی خودتون، یک کلاس مجزا بنویسید و از اون استفاده کنید نه اینکه به کنترلر دسترسی پیدا کنید. مثلاً این کد رو توی مسیر 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);