我正在尝试将1.5组件转换为1.7组件。除了分页,一切都有效。
会发生什么:
我在 view.html.php中的内容:
function display($tpl = null) {
$items = $this->get('Items');
$pagination = $this->get('Pagination');
$this->state = $this->get("State");
if (count($errors = $this->get('Errors'))) {
JError::raiseError(500, implode('<br />', $errors));
return false;
}
$this->items = $items;
$this->children = $items;
$this->pagination = $pagination;
$this->addToolBar();
parent::display($tpl);
}
并在 default.php 模板中,我只需输入:
<?php echo $this->pagination->getListFooter(); ?>
根据我读到的关于1.6和1.7的所有教程和文章,这应该是开箱即用的。所以要么我犯了一个错误,要么还有更多的分页呢?
附加: 当我正在研究另一个方面时,我在某处读到了在模板中不应使用表单属性名称。所以我改变了:
<form action="<?php echo JRoute::_('index.php?option=com_guides'); ?>" method="post" name="adminForm">
成:
<form action="<?php echo JRoute::_('index.php?option=com_guides'); ?>" method="post" id="adminForm">
奇怪的是,这改变了分页链接的行为。旧的name-attribute将我带回overvioew页面,而新的id-attribute使我保持在同一页面上。这个问题让我发疯了。
答案 0 :(得分:1)
我将自己的代码与几个不同的其他组件进行了比较,但我不明白为什么这会是解决方案,但是当我将模板default.php中的代码更改为:
时,它突然变得有效了。<form action="<?php echo JRoute::_('index.php?option=com_guides&view=guides'); ?>" method="post" id="adminForm" name="adminForm">
换句话说,我必须同时指定id和name属性,并在URL中包含&amp; view = guides。 我看到其他组件就是这样做的,但是如果没有这个,其他组件似乎也能正常工作。所以我怀疑它也取决于其他东西。
答案 1 :(得分:0)
您查看代码看起来不错,因此我首先猜测您的问题在于您的数据模型。听起来您要么没有正确保存用户状态信息,要么在提交表单时覆盖视图状态。单击分页栏时,您的POST参数是什么?确保没有“任务”或“视图”变量传递回Joomla。你编写了自己的getPagination()和populateState()方法吗?您最有可能被控制器重新路由到“指南”视图,这可能是对传递给Joomla的“任务”或“视图”变量的更改做出反应。
答案 2 :(得分:0)
我用过
$ this-&gt; pagination = $ this-&gt; get('Pagination');
我的还好。只需将其添加到view.html.php,然后添加
pagination-&GT; getListFooter(); ?&GT;到default.php,它运行正常,没有额外的编码