在自定义组件中,在网站视图中,我会显示一个国家/地区列表,每个国家/地区都显示另一个页面的链接,显示居住在该国家/地区的人员。
这是一个链接:
index.php?option=com_example&view=persons&country=1&Itemid=131
缺少什么:
打开人员页面时,会列出所有人员。
我在寻找什么:
我只想在链接中显示国家/地区的人,1
在上面的示例中。
我尝试在model-files
的{{1}}中添加此条件,但失败了。
+++ 编辑 ++++
感谢接受的答案,我能够完成我所需要的。不幸的是,这似乎会产生副作用:
persons
抛出该错误的代码是
Fatal error: Call to a member function getPagesCounter() on a non-object
in .../view/persons/tmpl/default.php` (...)
在评论该行时,此代码会出现相同的错误:
<?php echo $this->pagination->getPagesCounter(); ?>
这是怎么发生的,我该怎么办?试图追查这个问题,但不知道从哪里开始。
+++ 编辑 +++
还没能解决这个问题。做了<?php echo $this->pagination->getPagesLinks(); ?>
,这是输出:
var_dump($this->pagination);
所以对象确实存在,不是吗?
答案 0 :(得分:1)
您正在密切编辑模型文件。 在你的Persons模型(ExampleModelPersons)中,你需要确保你有以下元素:
将过滤器名称列入白名单:
<?php
public function __construct($config = array())
{
if (empty($config['filter_fields'])) {
$config['filter_fields'] = array(
'country',
// other not standard filters
);
}
parent::__construct($config);
}
?>
自动填充状态过滤器:
<?php
protected function populateState($ordering = null, $direction = null)
{
$country = $this->getUserStateFromRequest($this->context.'.filter.country', 'country', '', null, false);
$this->setState('filter.country', (int) $country);
// ....Other states
{
?>
上下文的商店ID:
<?php
protected function getStoreId($id = '')
{
$id .= ':'.$this->getState('filter.country');
// Other states
}
?>
最重要的一个是数据库查询
<?php
protected function getListQuery()
{
// ... Other parts of the querty
if ($country = $this->getState('filter.country'))
$query->where("country = ". (int) $country);
}
?>
如果您不需要在用户会话中保存状态,则可以在数据库查询中轻松将其删除为两个班轮。
<?php
// ... Other parts of the querty
if ($country = $app->input->getInt('country'))
$query->where("country = ". (int) $country);
?>