在Yii中,我怎样才能有一个循环遍历对象数组的表单?

Hen*_*ing 0 php yii

我正在尝试创建一个Yii ActiveForm,用于编辑表中显示的对象列表中的值.

涉及的课程:

class ResultForm extends CFormModel {

    /**
     * @var array[Result]
     */
    public $results; //Filled with an array of Result objects
}

class Result {  
    public $requiredArea;
}
Run Code Online (Sandbox Code Playgroud)

我的看法:

<% $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(); %>
Run Code Online (Sandbox Code Playgroud)

文本字段被渲染,Yii不会抱怨,但它们不包含正确的值.

有没有办法让这项工作成功,或者有更好的方法来迭代表单中的对象数组?

tha*_*smt 5

我想你想要的不是你拥有的东西:

<% $form->textField($result,"[$rowCounter]requiredArea") %>
Run Code Online (Sandbox Code Playgroud)

您要做的是传递您正在迭代的模型($ result)而不是父/表单模型,并且您希望将该模型的属性名称作为第二个参数传递(以及$ i值/数组索引)而不是实际属性.

有关表格输入的更多信息,请在Yii指南中查看此页面:http: //www.yiiframework.com/doc/guide/form.table

另外,检查textfield()的参数是什么:http://www.yiiframework.com/doc/api/CHtml#activeTextField-detail

干杯!