0

以下のコードを使用して、Yii フレームワークで 2 つのラジオ ボタン (承認されたメッセージと拒否されたメッセージ) を作成しました。

<?php echo CHtml::activeRadioButtonList($model, 'Approved', array('Approved Messages', 'Rejected Messages'), array('labelOptions'=>array('style'=>'display:inline'),'separator'=>'')) ?>

ここで、「承認済みメッセージ」ラジオボタンをクリックしたときに「承認済み」列の値が 1 であるテーブルの CGridView のすべての行と、「承認済み」列に値があるテーブルの CGridView のすべての行をフィルタリングして表示する必要があります。 「拒否されたメッセージ」ラジオボタンをクリックすると= 0になります。これどうやってするの

ラジオボタン

4

2 に答える 2

0

よし、すべてのドロップダウンの代わりにラジオ ボタンを入れましょう (笑)。ビューが次のように設定されていると仮定します。

// view/index.php  (or similar)
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$model->search(),
    'filter'=>Message::model(),
    'columns'=>
    [
        'id',
        'username',
        'email:email',
        'approved'=>[
            'name'=>'approved',
            'filter'=>$this->approvedFilter(), 
            // I like moving stuff like this out of the way.
            // But maybe it's smarter to put it in your model instead?
        ]
    ]
));

次はコントローラー。

// MessageController.php  (or similar)
public function actionIndex()
{
    $model = Message::model();
    // All we need to do is to assign the incoming value to the model we are using...
    if ( isset( $_GET['Message']['Approved'] )){
        $model->approved = $_GET['Message']['Approved'];
    }

    $this->render('index', ['model'=>$model]);
}

// Oh yeah the filter. I just copied your code.
public function approvedFilter(){
    return CHtml::activeRadioButtonList(
        Message::model(), 'approved',  array(0,1),
        array(
           'labelOptions'=>array('style'=>'display:inline'),
           'separator'=>''
        )
    );
}

このコードはテスト済みですが、土壇場で変更を加えたので、失敗したらごめんなさい! そして、単純な 'approved:boolean' の方がはるかにクリーンだと思います。;)

于 2013-07-24T13:37:22.773 に答える