1

ユーザーが複数の行の値を変更して送信をクリックできるようにするフォームを作成しようとしています。データベースから行を取得してテーブルに表示できます。ただし、テキストフィールドの代わりに。それらをドロップリストにしたい。

$list各行のドロップ リストに表示するオプションが含まれています。

私は何が欠けていますか?

<div class="row bottom">
        <?php 
            $list = CHtml::listData(Attendancetype::model()->findAll(), 'AttendanceTypeID', 'AttendanceTypeName');    
            print_r($list);

            $this->widget('zii.widgets.grid.CGridView', array(
                'dataProvider'=>  $model->search(),
                'columns'=>array(
                'CalendarDate',
                'GradeName',
                array(
                'value'=>'$data->TeacherFirstName . " " . $data->TeacherLastname',
                'header'=>'Teacher'
            ),
                array(
                'value'=>'$data->FirstName . " " . $data->LastName',
                'header'=>'Student'
            ),
                array(
                'value'=>$list,
                'type'=>'raw',
                'header'=>'Status'
            ),

            ),

            ));

        ?>
    </div>

現在のエラー メッセージ。

PHP warning

call_user_func_array() expects parameter 1 to be a valid callback, array must have exactly two members

C:\wamp\www\yii\framework\base\CComponent.php(611)

599      * @since 1.1.0
600      */
601     public function evaluateExpression($_expression_,$_data_=array())
602     {
603         if(is_string($_expression_))
604         {
605             extract($_data_);
606             return eval('return '.$_expression_.';');
607         }
608         else
609         {
610             $_data_[]=$this;
611             return call_user_func_array($_expression_, $_data_);
612         }
613     }
614 }
615 
616 
4

2 に答える 2

2

前の回答に追加するだけです。外部変数を使用する場合は、CColumn で定義する必要があります。したがって、コードは次のようになります。

$list = CHtml::listData(Attendancetype::model()->findAll(), 'AttendanceTypeID', 'AttendanceTypeName');
$this->widget('zii.widgets.grid.CGridView', array(
                'dataProvider'=>  $model->search(),
                'columns'=>array(
....
array('header'=>'Action',
     'type'=>'raw',
     'value'=> function ($data,$row) use $list {return CHtml::dropDownlist('actionList','', $list,array());}
       ),

これは必要に応じて機能します。Ninadの回答と同じです。Cgridview は最も柔軟な yii ウィジェットであり、wiki の例がたくさんあります。

于 2013-06-03T06:52:27.107 に答える
1

あなたのcgridviewでこれをやってみてください

 array('header'=>'Action',
     'type'=>'raw',
     'value'=>"CHtml::dropDownlist('actionList','', CHtml::listData(
            Attendancetype::model()->findAll(), 'AttendanceTypeID', 'AttendanceTypeName'),array())"
       ),
于 2013-06-03T05:37:39.593 に答える