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) を渡すことであり、そのモデルの属性の名前を 2 番目のパラメーターとして ($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 に答える