我试图将来自控制器的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是否被传递,但是没有,是否有人看到我是否做错了?
答案 0 :(得分:0)
在这一行
$this->redirect(array('parametro/create', 'pest'=>$pet->id));
您正尝试将有害生物参数传递给actionCreate,但您尚未将有害生物声明为动作创建中的参数。所以你需要这样做
public function actionCreate($pest)
{
// you can use $pest now
// your code
}
注意: - 现在,如果您尝试调用此actionCreate 而不传递$ pest参数,则会抛出异常。