yii,将vars从控制器传递到另一个控制器,依此类推

时间:2014-01-03 01:05:33

标签: php yii controller

我试图将来自控制器的var传递给另一个控制器,因此该控制器将呈现一个视图,该视图将呈现另一个视图,我将给出代码。

控制器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 $害虫,即时发送CHttp消息,看看var是否被传递,但是没有,是否有人看到我是否做错了?

1 个答案:

答案 0 :(得分:0)

在这一行

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

您正尝试将有害生物参数传递给actionCreate,但您尚未将有害生物声明为动作创建中的参数。所以你需要这样做

public function actionCreate($pest)
{
// you can use $pest now
// your code
}

注意: - 现在,如果您尝试调用此actionCreate 而不传递$ pest参数,则会抛出异常。