我正在尝试创建一个Yii ActiveForm,用于编辑表格中显示的对象列表中的值。
所涉及的课程:
class ResultForm extends CFormModel {
/**
* @var array[Result]
*/
public $results; //Filled with an array of Result objects
}
class Result {
public $requiredArea;
}
我的观点:
<% $form = $this->beginWidget('CActiveForm'); %>
<table>
....
<% $rowCounter = 0; foreach($resultForm->results as $result): %>
...
<tr>
....
<td>
<!-- This doesn't work -->
<% $form->textField($resultForm,
"results[$rowCounter]->requiredArea") %>
<!-- Just displaying the value works -->
<%= $resultForm->results[$rowCounter]->requiredArea %>
</td>
...
</tr>
<% $rowCounter++; endforeach; %>
</table>
<% $this->endWidget(); %>
文本字段已呈现,Yii不会抱怨,但它们不包含正确的值。
有没有办法让这项工作成功,或者有更好的方法来迭代表单中的对象数组?
答案 0 :(得分:5)
我想你想要的不是你想拥有的东西:
<% $form->textField($result,"[$rowCounter]requiredArea") %>
您要做的是传递您正在迭代的模型($ result)而不是父/表单模型,并且您希望将该模型的属性名称作为第二个参数传递(与$一起)我重视/数组索引)而不是实际属性。
在Yii指南中查看此页面,了解有关表格输入的更多信息: http://www.yiiframework.com/doc/guide/form.table
另外,检查textfield()的参数是什么: http://www.yiiframework.com/doc/api/CHtml#activeTextField-detail
喝彩!