我正在使用get方法在Yii中与Cactiveform斗争。这是我的代码:
<?php $form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'inlineForm',
'type'=>'inline',
'method'=>'get',
'action'=> array('searchview'),
'htmlOptions'=>array('class'=>'well'),
));
echo $form->dropDownListRow($model, 'year',$arrYears);
echo $form->dropDownListRow($model, 'month',$mons);
echo $form->dropDownListRow($model, 'day',$days);
$this->widget('bootstrap.widgets.TbButton', array('buttonType'=>'submit', 'type'=>'primary','label'=>'Vyhledat'));
$this->endWidget(); ?>
当我点击提交按钮时,我会收到以下网址:
http://stavbadomusvepomoci.cz/stavba_naklady/index.php?r=expenses%2Fsearchview&Expenses%5Byear%5D=2013&Expenses%5Bmonth%5D=0&Expenses%5Bday%5D=0&yt0=
问题是这些字段的名称是Expenses [year] insted of just:year。当我删除它时,这个网址就可以了。
http://stavbadomusvepomoci.cz/stavba_naklady/index.php?r=expenses%2Fsearchview&year=2013&month=0&day=0&yt0=
我的搜索返回400错误,因为它无法识别网址。我使用reguler CHtml :: beginForm工作,但我希望这可以使用CActive表单。
所以我的问题是:如何摆脱网址中的费用[],以便cactiveform工作。
感谢您的回答!
答案 0 :(得分:1)
我建议使用$ _GET [“Expenses”]而不是服务器端的整个$ _GET数组,因为它可能包含非搜索相关变量,如CSRF令牌。
我看到实现你想要的唯一方法是dropDownListRow的htmlOptions参数。您可以给它一个特定的名称,这导致yii没有设置依赖于模型属性的名称。
$form->dropDownListRow($model, 'year', $arrYears, array("name" => "year"));