后端的Joomla分页链接到错误的页面

时间:2011-11-01 09:19:15

标签: joomla pagination joomla1.7

我正在尝试将1.5组件转换为1.7组件。除了分页,一切都有效。

会发生什么:

  • 单击组件菜单中的菜单选项“指南”将显示概述页面。
  • 点击名为“guide-list”的按钮会显示一个指南列表和底部的分页栏。但每当我点击该分页栏上的任何内容时,我都会回到概述页面。

我在 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使我保持在同一页面上。这个问题让我发疯了。

3 个答案:

答案 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,它运行正常,没有额外的编码