0

我正在尝试创建一个 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 没有抱怨,但它们不包含正确的值。

有没有办法可以使这项工作,或者是否有更好的方法来遍历表单中的对象数组?

4

1 回答 1

5

我认为你想要这个而不是你所拥有的:

<% $form->textField($result,"[$rowCounter]requiredArea") %>

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

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

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

干杯!

于 2010-08-22T05:36:49.460 回答