【问题标题】:How to change grid view filter using activeDropDownList yii2?如何使用 activeDropDownList yii2 更改网格视图过滤器?
【发布时间】:2023-03-15 09:39:01
【问题描述】:

我想在 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}',
		
		
		
    ]); ?>

在下面的部分我应该改变什么来解决这个问题?

<?

	[
			
			
                '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']),
			],

?>

谢谢 :))

【问题讨论】:

    标签: php yii yii2 frameworks


    【解决方案1】:

    尝试在您的视图中添加 realted use 子句

    例如,如果您拥有 common\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'),
    

    【讨论】:

    • 找不到类 'yii\models\LapTop'
    • 您确定在您分配的命名空间中有一个名为 LapTop 的类吗??????
    • 使用akharin\models\Laptop; name 为真。但同样的错误
    • 什么是应用脚手架? :( 我应该送什么?
    • 是你的应用程序目录结构.. .. .无论如何,您使用的是基本模板还是高级模板?
    【解决方案2】:

    如果您使用 PhpStorm,您可以删除此代码“Laptop::find()” 在这个地方输入“笔记本电脑”这个词后 - PhpStorm 添加了下拉列表 - 从这个下拉列表中你应该选择“你的笔记本电脑类的位置”,

    在它之后 - 在代码中,您的单词“笔记本电脑”将被替换为类似的东西 -“common\models\LapTop::find()”

    示例:https://i.ytimg.com/vi/EVvBKDB1NNQ/maxresdefault.jpg

    【讨论】:

    • 如果您使用“笔记本电脑类”注释代码 - 您是否会遇到相同的错误?您需要知道产生错误的行。
    • 谢谢老兄。它在以前的答案中得到了解决。更新后:)))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多