3

Q : cgridview からチェックボックスの値を取得する方法を教えてください。

ステータス : CJuiDialog で popbox に cgridview を作成しています。しかし、グリッドビューからチェックボックスの値を取得できません。500エラーになりました。

これは、ポップアップボックスを開く私の見解です

<div style="height:50px;">      
        <?php $imghtml=CHtml::image(Yii::app()->request->baseUrl.'/images/assets/approver.png','', array('style'=>'margin: 5px 0;')); ?>
            <?php echo CHtml::ajaxLink(
        Yii::t('accrecei',$imghtml),
        $this->createUrl('implementer/Approverlist', array('id'=>$model->id)),
        array(
                'onclick'=>'$("#accreceilist").dialog("open"); return false;',
                'update'=>'#reviewerlist'                   
                                        ),
        array(
                'id'=>'showaccreceilist',
                'class'=>'btn btn-info', 
                'title'=>'Add/Remove reviewer',
                'style'=>'width:25px; float:right; margin-button:20px;',)
                                        );?>
                <div id="reviewerlist"></div>
        </div>

これがポップアップボックスです

<?php 
$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
                'id'=>'reviewerlist',
                'options'=>array(
                    'title'=>Yii::t('accrecei','Reviewer List'),
                    'autoOpen'=>true,
                    'modal'=>'true',
                    'width'=>'750',
                    'height'=>'500',

                ),

                ));
//echo $this->renderPartial('_listing', array('model'=>$model, 'acccategory'=>$acccategory,'job'=>$job)); ?>

<?php $this->renderPartial('_listing',array('model' => $model,'arr_reviewer' => $arr_reviewer, 'current_reviewers'=> $current_reviewers),false,true); ?>
<?php $this->endWidget('zii.widgets.jui.CJuiDialog');?>

これはグリッド ビュー「_listing.php」です。

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'job-form',
    'enableAjaxValidation'=>true,
)); ?>

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'acc-recei-grid',
    'dataProvider'=>$model->search_reviewerlist(),
    'filter'=>$model,
    'columns'=>array(
        array(
            'class' => 'CCheckBoxColumn',
            'selectableRows' => 2,
            'checkBoxHtmlOptions' => array(
                'name' => 'userids[]',
            ),
            'value'=>'$data->id',
            //'checked'=>'(in_array($data->id, $current_reviewers) ? 1 : ""',
                'checked'=>function($data, $row) use ($current_reviewers){
                return in_array($data->id, $current_reviewers);
                }

         ),
        'username',
        array(
            'type'=>'raw',
            'value'=>'$data->id',
            //'filter'=>array('style'=>'visible:none'), 
            //'headerHtmlOptions'=>array('style'=>'width:0px; display:none; border:none; textdecoration:none'),
            'htmlOptions'=>array('style'=>'display:none; border:none;', 'class'=>'user-id'),  
            //'header'=>false,
            //'filter'=>false,
        ),

    ),
)); ?>


 <div align="center">
        <?php echo CHtml::ajaxSubmitButton(Yii::t('reviewer','Update'),Yii::app()->createUrl('implementer/updatereviewer',array('id'=>$model->id)),array('success'=>'js: function(data) {

                        $("#reviewerlist").dialog("close");
                    }'),array('id'=>'closeJobDialog')); ?>


    </div>

<?php $this->endWidget(); ?>

これは、チェックボックスの値を取得するためのコントローラー関数です

public function actionUpdatereviewer()
    {
        var_dump($_POST['userids']);
        echo 'debug';
        echo $_GET['id'];
        die;    

    }

アドバイスありがとうございます。

4

1 に答える 1

0

私は自分でそれを手に入れました

これが私の見解

<div style="height:50px;">      
        <?php $imghtml=CHtml::image(Yii::app()->request->baseUrl.'/images/assets/approver.png','', array('style'=>'margin: 5px 0;')); ?>
            <?php echo CHtml::ajaxLink(
                    Yii::t('customer_id',$imghtml),
                    $this->createUrl('implementer/approverlist', array('id'=>$model->id)),
                    array(
                        'onclick'=>'$("#reviewerlist").dialog("open"); return false;',
                        'update'=>'#reviewerlist'
                        ),
                    array('id'=>'reviewer-link',
                          'class'=>'btn btn-info',
                          'title'=>'Add/Remove reviewer',
                          'style'=>'width:25px; float:right; margin-button:20px;',)
                    );?>
                <div id="reviewerlist"></div>
        </div>

これは_list.phpです(私の質問としてポップアップボックスからレンダリングしてください)

 <?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'job-form',
    'enableAjaxValidation'=>true,
)); ?>

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'acc-recei-grid',
    'dataProvider'=>$model->search_reviewerlist(),
    'filter'=>$model,
    'columns'=>array(
        array(
            'class' => 'CCheckBoxColumn',
            'selectableRows' => 2,
            'checkBoxHtmlOptions' => array(
                'name' => 'userids[]',
            ),
            'value'=>'$data->id',           
            'checked'=>function($data, $row) use ($current_reviewers){
                return in_array($data->id, $current_reviewers);
            }               
         ),
        'username',

    ),
)); ?>


 <div align="center">
        <?php echo CHtml::ajaxSubmitButton(Yii::t('reviewer','Update'),Yii::app()->createUrl('implementer/updatereviewer',array('id'=>$model->id)),array('success'=>'js: function(data) {

                        $("#reviewerlist").dialog("close");
                    }'),array('id'=>'closeJobDialog')); ?>
    </div>
<?php $this->endWidget(); ?>

これは私のコントローラーです

public function actionApproverlist($id)
    {
        $users = new Users('reviewerlist');
        //$users->scenario = "reviewerlist";
        $users->unsetAttributes();  // clear any default values

        if(isset($_GET['Users']))
            $users->attributes=$_GET['Users'];


        $model                = $this->loadModel($id);
        $arr_reviewer         = Users::model()->get_reviewers();

        $current_reviewers    = explode( ',', $model->reviewers );
        $reviewer_lastcomment = Yii::app()->generals->last_comment($model, $current_reviewers);

        $this->renderPartial('listing',array('model' => $users, 'arr_reviewer' => $arr_reviewer, 'current_reviewers'=> $current_reviewers),false,true);

    }

    public function actionUpdatereviewer()
    {
        var_dump($_POST['userids']);

    }

firebug->network で $_POST['userids'] を確認してください。$_POST['userids'] の値が表示されます。

yii と踊ろう。乾杯!!!

于 2012-10-23T09:56:10.397 に答える