В Yii, как я могу иметь форму, которая проходит через массив объектов? - PullRequest
0 голосов
/ 21 августа 2010

Я пытаюсь создать 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 не жалуется, но они не содержат правильных значений.

Есть ли способ, которым я могу сделать эту работу, или есть лучший подходдля перебора массива объектов в форме?

1 Ответ

5 голосов
/ 22 августа 2010

Я думаю, что вы хотите это вместо того, что у вас есть:

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

Что вы хотите сделать, это передать модель, по которой вы выполняете итерацию ($ result), вместо модели parent / form, и вы хотите передать имя атрибута этой модели в качестве второго параметра (вместе с $ я значение / индекс массива) вместо фактического атрибута.

Просмотрите эту страницу в руководстве по Yii для получения дополнительной информации о табличном вводе: http://www.yiiframework.com/doc/guide/form.table

Также проверьте, какие параметры должны быть для textfield (): http://www.yiiframework.com/doc/api/CHtml#activeTextField-detail

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...