我正在尝试将我通过GET发送的2个变量的大量分配到另一个模型:: controller(从project :: actionCreate到client :: actionCreate)
在project :: actionCreate的_form视图中,我得到了以下内容:
<?php echo " ".Chtml::link('+New client',array('client/create',array('Client' => array('redir'=>Yii::app()->controller->route,'redirId'=>$model->id))));?>
目标是使用属性“redir”和“redirId”创建数组“Client”。
在client :: actionCreate中我想做类似
的事情if(isset($_GET['Client']))
{
$model->attributes=$_GET['Client'];
}
现在我注意到我的$ _GET var将客户端置于子阵列0中,所以我用
尝试了这个$_GET[0]['Client']
同样,但没有运气。但是,如果我手动分配这样的变量:
$model->redir = $_GET[0]['Client']['redir'];
$model->redirId = $_GET[0]['Client']['redirId'];
然后它有效。
知道怎么了?目标是允许某人在创建/更新项目记录时创建新客户端,方法是将它们发送到client :: actionCreate,但是如果它们是从我的“+新客户端”链接到它们,则将它们重定向回原始项目:: actionCreate “链接。
答案 0 :(得分:2)
我认为client
数组放在子数组0中,因为你在参数周围添加了一个数组。尝试删除数组,如下所示:
<?php
Chtml::link('+New client',array('client/create', 'Client' => array('redir'=>Yii::app()->controller->route,'redirId'=>$model->id)));
?>
我不知道您的模型是什么样的,但如果未分配字段,则可能不是safe
。您可以通过将它们添加到模型的规则部分来使它们安全。或者您可以尝试以下操作,通过指定false参数,可以将值分配给不安全的属性。 (http://www.yiiframework.com/doc/api/1.1/CModel#setAttributes-detail)
$model->setAttributes($_GET['Client'], false);
答案 1 :(得分:0)
我不确定是否可以创建您想要的链接。我前段时间曾问过类似的问题Yii link with [ as a parameter我永远无法得到我想要的链接。最后,我刚刚创建了旧时尚方式的链接,而不是使用CHTML。