Php 将变量从控制器传递到另一个控制器,依此类推

Php 将变量从控制器传递到另一个控制器,依此类推,php,yii,controller,Php,Yii,Controller,我试图将一个变量从一个控制器传递到另一个控制器,所以这个控制器将呈现一个视图,该视图将呈现另一个视图的一部分,我将给出代码 控制器1: public function actionView($id) { $pet=new Peticion; $this->performAjaxValidation($pet); if(isset($_POST['Peticion'])) { $pet->attributes=$_POST['Petic

我试图将一个变量从一个控制器传递到另一个控制器,所以这个控制器将呈现一个视图,该视图将呈现另一个视图的一部分,我将给出代码

控制器1:

public function actionView($id)
{
    $pet=new Peticion;
    $this->performAjaxValidation($pet);
    if(isset($_POST['Peticion']))
    {

        $pet->attributes=$_POST['Peticion'];

        if($pet->save())
            $this->redirect(array('parametro/create', 'pest'=>$pet->id));

    }

    $this->render('view',array(
        'model'=>$this->loadModel($id), 'pet'=>$pet
    ));
}
控制器2:

public function actionCreate()
    {
        $model=new Parametro;

        $variable = file_get_contents('protected\column.txt');
        $vars = explode(' ', $variable);
      // make SURE that you are getting $vars as array
      if(isset($_POST['Parametro']))
        {
            $model->attributes=$_POST['Parametro'];
            if(isset($_POST['createCheck']))
        {
             $newVar=array();
            $checkVariables=$_POST['createCheck'];
            foreach($checkVariables as $key)
            {
                $newVar[]=$vars[$key];
            }
            if(!empty($newVar))
            {
                foreach($newVar as $saveIt)
                {

                $model->$saveIt=1;
                }
                $model->save();

                echo 'saved';
            }    

           }
        $this->redirect(array('view','id'=>$model->id));
        }

        if(isset($pest))
            throw new CHttpException('var exists');

        $this->render('create',array(
            'model'=>$model,
            'variable'=>$vars,
        ));
    }
我试图传递var$pest,我发出了一个throw-CHttp消息来查看var是否被传递,但是它不是,有人看到我是否做得不对吗?

在这行中

$this->redirect(array('parametro/create', 'pest'=>$pet->id));
您正试图将pest参数传递给actionCreate,但尚未在actionCreate中将pest声明为参数。所以你需要这样做

public function actionCreate($pest)
{
// you can use $pest now
// your code
}
注意:-现在,如果您尝试调用此actionCreate而不传递$pest参数,则它将抛出异常