Laravel-admin: 搜索怎么整合select2?

Created on 24 Mar 2017  ·  2Comments  ·  Source: z-song/laravel-admin

搜索框里边的选项特别的多,怎么查询?
添加可以搜索的,列表查询的时候不能搜索?

Most helpful comment

修改一下view,就可以了
screen shot 2017-04-11 at 12 28 56 pm
screen shot 2017-04-11 at 12 30 47 pm

All 2 comments

可以用自定义过滤器.
先增加一个过滤器字段

use Encore\Admin\Grid\Filter\AbstractFilter;
use Admin;

class Select
{

    protected $options = [];

    /**
     * @var AbstractFilter
     */
    protected $filter;

    public function __construct($options = [])
    {
        $this->options = $options;
    }

    public function setFilter(AbstractFilter $filter)
    {
        $this->filter = $filter;

        return $this;
    }

    public function name()
    {
        return 'select';
    }

    public function variables()
    {
        $class = str_replace('.', '_', $this->filter->getColumn());

        Admin::script(<<<EOF
$('#filter-modal').removeAttr('tabindex'); // 使用modal时, 需要移除 tabindex 才能使用 select2 的文本搜索
$('.{$class}').select2({
    allowClear: true,
    placeholder: "选择"
});
EOF
);

        return [
            'options' => $this->options,
            'class' => $class,
        ];
    }
}

然后增加一个自定义的过滤器

use App\Support\Grid\Filters\Fields\Select;
use Encore\Admin\Grid\Filter\AbstractFilter;

class Equal extends AbstractFilter
{

    public function select($options = [])
    {
        $select = new Select($options);
        return $this->setField($select->setFilter($this));
    }

    public function render()
    {
        return view('grid.filters.select', $this->variables());
    }
}

然后在表格构建的时候, 使用这个自定义的过滤器

$grid->addFilter(new Equal('name', '姓名'));

修改一下view,就可以了
screen shot 2017-04-11 at 12 28 56 pm
screen shot 2017-04-11 at 12 30 47 pm

Was this page helpful?
0 / 5 - 0 ratings

Related issues

piian picture piian  ·  3Comments

zhenyangze picture zhenyangze  ·  3Comments

cdhraesaemer picture cdhraesaemer  ·  3Comments

vlongen picture vlongen  ·  3Comments

abufalbo picture abufalbo  ·  3Comments