我使用以下代码在Yii框架中创建了两个单选按钮(已批准的消息和被拒绝的消息)
<?php echo CHtml::activeRadioButtonList($model, 'Approved', array('Approved Messages', 'Rejected Messages'), array('labelOptions'=>array('style'=>'display:inline'),'separator'=>'')) ?>
现在我必须过滤并显示表格的CGridView中的所有行,当我点击“已批准的邮件”单选按钮时,“已批准”列的值为1 =表格的CGridView中的所有行当我点击“被拒绝的消息”单选按钮时,'有值= 0。我怎么能这样做
答案 0 :(得分:0)
我使用了一个下拉菜单,值为是和否。只需使用以下代码将approved
列翻译成文本:
array(
'name' => 'approved',
'value' => '($data->approved ? "Yes" : "No")',
'filter' = >CHtml::dropDownList('Approved', '',
array(
' '=>'All',
'1'=>'On',
'0'=>'Off',
)
),
)
此链接是我获取此信息的地方:http://www.yiiframework.com/forum/index.php/topic/30694-cgridview-filter-dropdown-from-array/
我使用cgridview filter example
答案 1 :(得分: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'=>''
)
);
}
此代码已经过测试,但我做了最后一分钟的更改,如果它爆炸了,那就很抱歉! 我仍然认为一个简单的'已批准:布尔'更清洁。 ;)