2014-02-28 26 views
0

我想执行一个2变量的质量指派我通过GET发送到另一个模型::控制器(从项目:: actionCreate到客户端:: actionCreate)

在项目的_form观点:: actionCreate我有以下几点:

<?php echo "&nbsp;".Chtml::link('+New client',array('client/create',array('Client' => array('redir'=>Yii::app()->controller->route,'redirId'=>$model->id))));?> 

与属性“再导向”和“redirId”创建数组“客户”的目标。

在客户端:: actionCreate我要像做

if(isset($_GET['Client'])) 
{ 
    $model->attributes=$_GET['Client']; 
} 

现在我发现我的$ _GET变种把客户端内部子阵列0,所以我用

$_GET[0]['Client'] 

试过这种以及,但没有运气。但是,如果我手动分配这样的变量:

$model->redir = $_GET[0]['Client']['redir']; 
$model->redirId = $_GET[0]['Client']['redirId']; 

然后它的工作。

任何想法是什么?目标是允许某人在创建/更新项目记录时创建一个新客户端,方法是将它们发送到client :: actionCreate,但将它们重定向回原始项目:: actionCreate,如果它们从我的“+新客户端“链接。

回答

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); 
+0

这正是我做错了,谢谢! – McB

0

我不确定创建一个像你想要的链接是可能的。我在前段时间询问过类似的东西Yii link with [ as a parameter我根本无法获得我想要的链接。最后,我刚创建链接的时尚方式,而不是使用CHTML。