Joomla搜索栏未加载用户状态

时间:2018-09-16 08:12:28

标签: php joomla

我正在组件中实现Joomla搜索栏。但是由于某些原因,它没有加载userState,因此下拉菜单不起作用。过滤器工作正常。

XML表单:

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">

        <field
                name="filter_search"
                type="text"
                label="COM_BANNERS_SEARCH_IN_TITLE"
                hint="JSEARCH_FILTER"
                class="js-stools-search-string"
        />

    </fields>

    <fields name="list">

        <field name="type" default="0" type="list" onchange="this.form.submit();" label="COM_RDAUTOS_CATEGORY_TYPE">
            <option value="0">COM_RAUTOS_PLS_SELECT</option>
            <option value="1">COM_RDAUTOS_VEHICLES</option>
            <option value="2">COM_RDAUTOS_PARTS</option>
        </field>

        <field name="state" default="0" type="list" onchange="this.form.submit();" label="COM_RAUTOS_PLS_SELECT">
            <option value="0">COM_RAUTOS_PLS_SELECT</option>
            <option value="1">COM_RAUTOS_UNPUBLISHED</option>
            <option value="2">COM_RAUTOS_PUBLISHED</option>
        </field>

    </fields>
</form>

我已将此添加到我的view.html.php文件中:

// Joomla Core functionality for filtering
$this->state               = $this->get('State');
$this->filterForm          = $this->get('FilterForm');
$this->activeFilters       = $this->get('ActiveFilters');

我已将此添加到模型中:

function __construct($config = [])
{
    if (empty($config['filter_fields']))
    {
        $config['filter_fields'] = [
            'state',
            'type',
        ];
    }

    parent::__construct($config);

}

这是用于请求变量的:

$state  = $this->getState('list.state');
$type   = $this->getState('list.type');
$search = $this->getState('filter.filter_search');

default.php

echo JLayoutHelper::render('joomla.searchtools.default', ['view' => $this]);

在搜索工具栏中选择一个值后,它会进行过滤并且一切正常,但是未在选择框中选择所选值。因此,我们不知道已过滤了什么。

有人可能知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

这里的问题是您的过滤器字段的state名称。该模型已经有一个名为state的变量。我想如果您将名称状态更改为类似status之类的东西,事情应该会按预期工作。