我基于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
非常感谢
答案 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;”
我希望这有助于其他人。我花了很长时间来弄明白这一点。