使用Yii2过滤占位符

7

有人知道如何在 Yii2 框架的 Gridview 过滤器上实现一个占位符或工具提示吗?我需要让用户明确这个文本框是搜索过滤器。

期待回应。

预览

2个回答

19

可以通过以下方式实现占位符:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel'  => $searchModel,
    'columns'      => [
        [
            'attribute' => 'name',
            'filterInputOptions' => [
                'class'       => 'form-control',
                'placeholder' => 'Type in some characters...'
             ]
        ],
        ['class' => 'yii\grid\ActionColumn' ],
    ],
]); ?>

虽然不是必须的,但应该提供class,这只是默认样式类。

全局设置

我找到的唯一方法是在用于应用程序配置的config/web.php文件中:

$config = [
    ...
    'on beforeRequest'          => function ($event) {
        Yii::$container->set('yii\grid\DataColumn', [
            'filterInputOptions' => [
                'class'       => 'form-control',
                'placeholder' => 'Type in some characters...'
            ]
        ]);
    },
    ...
];

这是一个事件处理程序。在每个请求中,DataColumn将被配置为使用占位符。可以在此处找到一些详细信息。现在您无需调整任何GridView配置即可使用占位符。当然,在处理程序中您也可以更改其他配置。


非常感谢,这个方法非常有效。还有一个问题,如果我想在整个应用程序中应用这个方法到所有的Gridview上,而不是手动地去每个Gridview并将其应用到每一列,我该怎么做呢? - Winkmei5ter
@user2818986 我更新了我的帖子。但我不知道这是否是唯一或最好的方法。 - robsch
非常感谢,您的解决方案很好。我想大多数应用程序范围内的函数都应该放在配置文件中,完全忘记了这一点。再次感谢。 - Winkmei5ter

3
您可以在 filterOptions 中使用 tooltip/title
 [
            'attribute' => 'name',
            'label' => 'labelname',
            ...
            ....
            'filterOptions' => [ 'title' => 'prova'],
        ],

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接