我正在组件中实现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]);
在搜索工具栏中选择一个值后,它会进行过滤并且一切正常,但是未在选择框中选择所选值。因此,我们不知道已过滤了什么。
有人可能知道解决方案吗?
答案 0 :(得分:0)
这里的问题是您的过滤器字段的state
名称。该模型已经有一个名为state
的变量。我想如果您将名称状态更改为类似status
之类的东西,事情应该会按预期工作。