0

我正在尝试将 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">

奇怪的是,这改变了分页链接的行为。旧的名称属性将我带回概述页面,而新的 id 属性使我保持在同一页面上。这个问题快把我逼疯了。

4

3 回答 3

1

我将自己的代码与其他几个不同的组件进行了比较,但我不明白为什么这是解决方案,但是当我将模板 default.php 中的代码更改为:

<form action="<?php echo JRoute::_('index.php?option=com_guides&view=guides'); ?>" method="post" id="adminForm" name="adminForm">

换句话说,我必须同时指定 id 和 name 属性并在 URL 中包含 &view=guides。我看到其他组件这样做,但是没有这个,其他组件似乎也能正常工作。所以我确实怀疑它也取决于其他东西。

于 2011-11-02T13:17:36.630 回答
0

您的视图代码看起来不错,所以我首先猜测您的问题在于您的数据模型。听起来您要么没有正确保存用户状态信息,要么在提交表单时覆盖了视图状态。当你点击分页栏时,你的 POST 参数是什么?确保没有“任务”或“视图”变量被传回 Joomla。您是否编写了自己的 getPagination() 和 populateState() 方法?您最有可能被您的控制器重新路由到您的“指南”视图,这可能是对传递给 Joomla 的“任务”或“视图”变量的变化作出反应。

于 2011-11-01T13:49:06.383 回答
0

我用了

$this->pagination = $this->get('Pagination');

我的还好。只需将其添加到 view.html.php,然后添加

分页->getListFooter(); ?>

到 default.php 并且它完美地工作,没有额外的编码

于 2012-02-23T00:22:02.170 回答