题
我正在尝试创建一个YII ActiveForm,该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不抱怨,但它们不包含适当的值。
我有什么方法可以做这项工作,还是通过形式的一系列对象进行迭代的更好方法?
解决方案
我认为您想要这个而不是您所拥有的:
<% $form->textField($result,"[$rowCounter]requiredArea") %>
您要做的是通过迭代($ result)而不是父级/表单模型的模型,您想以该模型属性的名称作为第二个参数(以及$ i value/value/数组索引)代替实际属性。
在YII指南中查看此页面以获取有关表格输入的更多信息:http://www.yiiframework.com/doc/guide/form.table
另外,检查textfield()的参数应该是什么:http://www.yiiframework.com/doc/api/chtml#activetextfield-detail
干杯!
不隶属于 StackOverflow