在操作Yii 1.1之前将参数传递给调用的操作

在操作Yii 1.1之前将参数传递给调用的操作,yii,yii1.x,Yii,Yii1.x,我想在我的beforeAction()中的某些操作之前创建一个简单控件 我使用beforeAction()中的参数初始化模型,然后我希望将此模型作为参数传递给指定的操作,以避免在每个相关操作中重复此代码。首先,您可以在控制器中为模型声明一个变量,如 private $model; 当然,您可以根据需要使用任何访问修饰符。现在,在beforeAction中,您可以初始化$model变量,如下所示 protected function beforeAction($action) { $th

我想在我的
beforeAction()
中的某些操作之前创建一个简单控件


我使用
beforeAction()
中的参数初始化模型,然后我希望将此模型作为参数传递给指定的操作,以避免在每个相关操作中重复此代码。

首先,您可以在控制器中为模型声明一个变量,如

private $model;
当然,您可以根据需要使用任何访问修饰符。现在,在beforeAction中,您可以初始化
$model
变量,如下所示

protected function beforeAction($action)
{
    $this->model = new MyModel();
    return parent::beforeAction($action);
}
现在,您可以通过
$this->model
访问任何控制器操作中的初始化变量。但是,如果您想初始化特定于任何操作的
$model
变量,则可以按如下操作

protected function beforeAction($action)
{
    if($action->id == "index")
    {
        $this->model = new MyModel();
    } else {
        $this->model = new OtherModel();
    }
    return parent::beforeAction($action);
}

我将这个答案添加到那些寻找这个问题的人身上。 完成必要的控制后,您只需调用$acction->runWithParams即可

protected function beforeAction($action)
{
    return parent::beforeAction($action->runWithParams(['param1' => $param1]));
}