2011-11-01 75 views
0

我想将1.5组件转换为1.7。迄今为止,除了分页以外,所有的东西都可以工Joomla分页后端链接到错误的页面

会发生什么事是:

  • 点击成分菜单中的菜单项“指南”带来了一个概述页面。
  • 点击一个名为“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 d开箱即用。所以,无论我犯了一个错误,还是有更多的分页,这?

附加的: 当我在另一个方面工作时,我读了一些在模板中不应该使用表单属性名称的地方。因此,我改变:

<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"> 

奇怪的是,这改变了分页链接的行为。旧的名称属性将我带回到overvioew页面,而新的id-attribute使我保持在同一页面上。这个问题让我疯狂。

回答

0

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

+0

我没有写我自己的getPagination()或populateState()方法(还)。 POST参数是控制器=指南&选项= com_guides&视图=指南# 你是对的,我试着改变我的控制器中的默认视图,它改变了我被重定向的方式。所以我想知道散列(#)是否是问题? – Evert

+0

显然这是我的愚蠢,哈希将不会是一个问题。奇怪的是,如果我将default.php模板中的代码更改为echo $ this-> pagination-> getPagesLinks()并单击其中一个,我将保持在同一页面上(所以我不会回到概述页面也不到下一页)。我开始怀疑一个错误? – Evert

1

我比我自己的代码,以几种不同的其他组件,我不明白为什么这将是解决办法,但是当我在模板修改代码不知何故突然作品如default.php到:

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

换句话说,我必须指定id和name属性,并在URL中包含视图=指南。 我看到其他组件这样做,但其他人似乎没有这个工作正常。所以我怀疑它也取决于其他的东西。

+0

添加视图参数是正确的方法。我不知道,在哪里看到了扩展,这些工作没有指定视图,但基本上joomla命名约定将回退到默认视图,如果没有在这里定义。例如,请参阅com_banners,您会发现clients-,tracks-和banners-view都具有指定的该属性。我有同样的问题,发现复制粘贴导致了错误,因为我忘了更新这部分;) – bquarta

0

我用

$这 - >分页= $这 - >的get( '分页');

和我的没事。只需要添加到view.html.php,然后添加

pagination-> getListFooter(); ?>

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