我想在yii2中更改gridview的过滤器。我想使用下拉列表和复选框来添加过滤器而不是过滤器文本框。
1)取消定义笔记本电脑型号错误 2)在我的代码下拉列表工作,但显示没有文本的空列表。(我想我错了一些)。帮助我解决它。
这是我的代码
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
//'id',
[
'attribute'=>'id',
'value'=>'id',
//'filter'=>array("1"=>"open","2"=>"in progress","3"=>"closed")
'filter' => Html::activeDropDownList($searchModel, 'id', ArrayHelper::map(Laptop::find()->asArray()->all(), 'id', 'laptop'),['class'=>'form-control','prompt' => 'Select Category']),
],
'network',
'technology',
'sup_id',
'speaker',
'size',
[
'class' => 'yii\grid\ActionColumn',
'template' => '{myButton}' , // the default buttons + your custom button
'buttons' => [
'myButton' => function($url, $model, $key) { // render your custom button
return Html::a('تایید');
}
]
],
// [
// 'class' => DataColumn::className(), // this line is optional
/* 'attribute' => 'name',
'format' => 'text',
'label' => 'Name',
],*/
// 'optical_drive',
//'webcam',
// 'touchpad',
// 'card_reader',
// 'ethernet',
// 'vga',
// 'hdmi',
// 'usb3_ports',
// 'usb2_ports',
// 'usb_type_c',
// 'thunderbolt_ports',
// 'serial_ports',
['class' => 'yii\grid\ActionColumn'],
],
'layout' => '{summary}{items}{pager}',
]); ?>
&#13;
在下面的部分我应该改变什么来解决这个问题?
<?
[
'attribute'=>'id',
'value'=>'id',
//'filter'=>array("1"=>"open","2"=>"in progress","3"=>"closed")
'filter' => Html::activeDropDownList($searchModel, 'id', ArrayHelper::map(Laptop::find()->asArray()->all(), 'id', 'laptop'),['class'=>'form-control','prompt' => 'Select Category']),
],
?>
&#13;
谢谢:))
答案 0 :(得分:1)
尝试在视图中添加realted use子句
例如,如果您拥有共同\ models中的所有模型
use common\models\LapTop;
或
use your_app_name\models\LapTop;
为your_app_name
指定正确的值或基本模板尝试
use app\models\LapTop;
和过滤器尝试仅使用
'filter'=>ArrayHelper::map(LapTop::find()->asArray()->all(), 'id', 'laptop'),
答案 1 :(得分:1)
如果你使用PhpStorm你可以删除这段代码“Laptop :: find()” 在你输入这个地方后,单词“Laptop” - PhpStorm添加下拉列表 - 从这个下拉列表中你应该选择“你的笔记本电脑类的位置”,
之后 - 在代码中你的单词“Laptop”将被类似的东西所取代 - “common \ models \ LapTop :: find()”