在yii中,我如何才能有一个通过一系列对象循环的表格?

StackOverflow https://stackoverflow.com/questions/3537908

  •  30-09-2019
  •  | 
  •  

我正在尝试创建一个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

干杯!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top