2011-11-01 50 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它完美的工作,沒有額外的編碼