【问题标题】:Joomla pagination in back-end links to wrong pages后端链接中的 Joomla 分页到错误页面
【发布时间】:2011-12-19 08:28:06
【问题描述】:

我正在尝试将 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 属性使我保持在同一页面上。这个问题快把我逼疯了。

【问题讨论】:

    标签: joomla pagination joomla1.7


    【解决方案1】:

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

    【讨论】:

    • 我还没有编写自己的 getPagination() 或 populateState() 方法。 POST 参数是 controller=guides&option=com_guides&view=guides# 你是对的,我尝试更改控制器中的默认视图,它改变了我被重定向的方式。所以我想知道哈希(#)是否是问题所在?
    • 显然我很傻,散列不会有问题。奇怪的是,如果我将 default.php 模板中的代码更改为 echo $this->pagination->getPagesLinks() 并单击其中一个,我将保持在同一页面上(所以我既不会回到概述页面也不到下一页)。我开始怀疑一个错误?
    【解决方案2】:

    我将自己的代码与其他几个不同的组件进行了比较,我不明白为什么这是解决方案,但是当我将模板 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。 我看到其他组件这样做,但没有这个,其他组件似乎也能正常工作。所以我怀疑它也取决于其他东西。

    【讨论】:

    • 添加视图参数是正确的做法。我不知道,您在哪里看到过扩展,无需指定视图即可工作,但如果此处未定义,则基本上 joomla 命名约定将回退到默认视图。例如,参考 com_banners,您会发现clients-、tracks- 和banners-view 都指定了这个属性。我有同样的问题,发现复制粘贴导致错误,因为我忘了更新这部分;)
    【解决方案3】:

    我用过

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

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

    分页->getListFooter(); ?>

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

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多