我想在我的beforeAction()中的某个操作之前创建一个简单的控件。我用beforeAction()中的参数初始化了一个模型,然后我想把这个模型作为参数传递给指定的操作,以避免在每个相关的操作中重复这个代码。
beforeAction()
jgovgodb1#
首先,您可以在控制器中为模型声明一个变量,如下所示
private $model;
当然,你可以根据自己的要求使用任何访问修饰符。
protected function beforeAction($action) { $this->model = new MyModel(); return parent::beforeAction($action); }
现在你可以通过$this->model访问任何控制器操作中的初始化变量。但是如果你想初始化特定于任何操作的$model变量,那么你可以按如下方式操作
$this->model
$model
protected function beforeAction($action) { if($action->id == "index") { $this->model = new MyModel(); } else { $this->model = new OtherModel(); } return parent::beforeAction($action); }
wljmcqd82#
我把这个答案添加到那些搜索这个问题的人中。在做了必要的控制之后,你可以只调用$action-〉runWithParams。
protected function beforeAction($action) { return parent::beforeAction($action->runWithParams(['param1' => $param1])); }
2条答案
按热度按时间jgovgodb1#
首先,您可以在控制器中为模型声明一个变量,如下所示
当然,你可以根据自己的要求使用任何访问修饰符。
现在你可以通过
$this->model
访问任何控制器操作中的初始化变量。但是如果你想初始化特定于任何操作的$model
变量,那么你可以按如下方式操作wljmcqd82#
我把这个答案添加到那些搜索这个问题的人中。在做了必要的控制之后,你可以只调用$action-〉runWithParams。