前端的joomla pagination getListFooter无法正常工作

时间:2014-06-18 17:05:49

标签: joomla pagination

我基于http://docs.joomla.org/的教程学习了developt组件,我在分页时遇到问题,点击第1,2,3页......不行,

这是我的代码: com_bet /模型/ test.php的:

defined('_JEXEC') or die;
jimport('joomla.application.component.modellist');
class BetModelTest extends JModelList{      
    protected function getListQuery(){      
        $db=JFactory::getDbo();
        $query=$db->getQuery(true);
        $query->select('*')->from('#__member');     
        return $query;
    }   
}

com_bet /视图/测试/ view.html.php

defined('_JEXEC') or die;
jimport('joomla.application.component.view');
class BetViewTest extends JViewLegacy{
    function display($tpl=null){        
        $items=$this->get('Items');
        $pagination=$this->get('Pagination');
        $this->items=$items;
        $this->pagination=$pagination;
        parent::display($tpl);
    }
}

com_bet /视图/测试/ TMPL /如default.php:

defined('_JEXEC') or die;
JHtml::_('behavior.tooltip');
?>
<form action="index.php?option=com_bet&view=test" method="post">
<table>
<thead>
    <tr>
        <th>ID</th>
        <th>Username</th>
        <th>Password</th>
        <th>Funds</th>
    </tr>
</thead>
<tbody> 
    <?php foreach ($this->items as $item){?>
    <tr>
        <td><?php echo $item->id;?></td>
        <td><?php echo $item->username;?></td>
        <td><?php echo $item->pass;?></td>
        <td><?php echo $item->funds;?></td>
    </tr>
    <?php }?>   
</tbody>
<tfoot>
    <tr>
        <td colspan='4'><?php echo $this->pagination->getListFooter();?></td>
    </tr>
<tfoot>
</table>
</form>

我在镀铬检查元素中观看,它显示&#34;无法读取属性&#39; limitstart&#39;未定义&#34;像pic背后: http://i1119.photobucket.com/albums/k623/helbros/joomla.png

Chrome - Inspect Element

非常感谢

2 个答案:

答案 0 :(得分:1)

您需要在表单中添加id属性,您还需要在表单中使用名称为limitstart的隐藏字段。目前,javascript正在查找标识为adminForm的表单,但无法找到它。

要更新默认限制,您可以通过添加方法Model来扩展populateState,方法如下所示:

protected function populateState($ordering = null, $direction = null) {
  $app = JFactory::getApplication();

  $limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'uint');
  $this->setState('list.limit', $limit);
  // As you can see if no limit is set, it gets it from default value of config, 
  // but you can replace $app->getCfg('list_limit') by any integer you want to 
  // override default limit value

  $limitstart = $app->input->get('limitstart', 0, 'uint');
  $this->setState('list.start', $limitstart);

  $limitstart = $app->input->get('limitstart', 0, 'uint');
  $this->setState('list.start', $limitstart); 
}

答案 1 :(得分:0)

这是一个古老的问题(超过一年前),但我在Joomla 3上遇到了同样的问题 - 也就是说,我可以通过一些努力获得在前端工作的分页,但是改变了显示的列表元素不起作用。我终于弄明白了。

问题是过滤器和分页中的选择限制框的名称为“limit”而不是“list [limit]”。将HTML编辑为后者使其工作。

如何使其在代码中工作: 1.你必须有一个过滤器,所以/ models / form中的filter_VIEW.xml文件带有一个字段列表“list”和一个字段“limit”类型“limitbox”(以com_users为例)。 2.您必须使用

调用视图中的过滤器
JLayoutHelper::render('joomla.searchtools.default', array('view' => $this, 'options' => array('filtersHidden' =>$hidden)));

这将为您提供过滤区域中的限制框(您不需要任何其他过滤器)。 3.要删除分页区域中不起作用的限制框,请使用CSS将类“限制”设置为“display:none;”

我希望这有助于其他人。我花了很长时间来弄明白这一点。