2011-10-06 56 views
3

我有一個頁面有兩個選項卡,一個搜索選項卡和一個帶有數據庫網格的選項卡。在用戶編輯網格中的其中一個項目後,我想將它們保留在網格選項卡上,而不是首先按順序排列的表單選項卡。Magento選項卡更改/重定向

有沒有辦法通過代碼更改頁面上的活動選項卡?

這是標籤代碼:

protected function _beforeToHtml() 
{ 
    $this->addTab('search_string', array(
     'label'  => Mage::helper('advancedtranslate')->__('Find a string'), 
     'title'  => Mage::helper('advancedtranslate')->__('Find a string'), 
     'content' => $this->getLayout()->createBlock("advancedtranslate/adminhtml_advancedtranslate")->toHtml(), 
     'active' => true 
    )); 

    $this->addTab('list_untranslated', array(
     'label'  => Mage::helper('advancedtranslate')->__('Untranslated strings'), 
     'title'  => Mage::helper('advancedtranslate')->__('Untranslated strings'), 
     'content' => $this->getLayout()->createBlock("advancedtranslate/adminhtml_grid")->toHtml(), 
     'active' => false 
    )); 

    return parent::_beforeToHtml(); 
} 

而且這是在我的控制器來處理重定向的saveAction:

public function saveAction(){ 
    //write data away to core_translate table 
    $resource = Mage::getResourceModel('core/translate_string'); 

    $request    = $this->getRequest(); 
    $translate_id   = $request->getParam('id'); 
    $original    = $request->getParam('original_translation'); 
    $custom    = $request->getParam('string'); 
    $locale    = $request->getParam('locale'); 
    $storeId    = $request->getParam('storeid'); 
    $storeViewSpecific = $request->getParam('storeview_specific'); 

    if($storeId != 0 && $storeViewSpecific != 1){ 
     $storeId = 0; 
    } 

    $resource->saveTranslate($original, $custom, $locale, $storeId); 

    //delete record from phpro table 
    $advancedTranslateRecord = Mage::getModel('advancedtranslate/advancedtranslate'); 

    $advancedTranslateRecord->setId($translate_id) 
          ->delete(); 

    //clear the cache 
    Mage::app()->getCache()->clean(); 

    Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml') 
              ->__('Translation was saved.')); 
    $this->_redirect('*/*/'); 
} 
+0

肯定的事情是有辦法做到這一點。不幸的是,你還沒有發佈你的代碼給你帶來麻煩,所以沒有人能真正幫助你,或者在這裏提出任何建議,關於Stack Overflow的問題一般與編程或軟件開發有關,在[faq ](http://stackoverflow.com/faq)。 –

+0

更新了我的文章。 – Jeroen

回答

5

是的,你可以通過更改「活動」這樣做=> true/false屬性在_beforeToHtml() ...只需傳遞一個參數或在saveAction()中設置一個會話值...所以當頁面被重定向時,如果參數已設置,請檢查beforeToHtml()你改變'active'=> $ somevariable的順序。

所以基本上做,

protected function _beforeToHtml() 
{ 
     $active = true; 
     if(Mage::getSingleton('admin/session')->getData('ActiveTab')) { 
      $active = false; 
     } 
    $this->addTab('search_string', array(
    'label'  => Mage::helper('advancedtranslate')->__('Find a string'), 
    'title'  => Mage::helper('advancedtranslate')->__('Find a string'), 
    'content' => $this->getLayout()->createBlock("advancedtranslate/adminhtml_advancedtranslate")->toHtml(), 
    'active' => $active 
    )); 

    $this->addTab('list_untranslated', array(
    'label'  => Mage::helper('advancedtranslate')->__('Untranslated strings'), 
    'title'  => Mage::helper('advancedtranslate')->__('Untranslated strings'), 
    'content' => $this->getLayout()->createBlock("advancedtranslate/adminhtml_grid")->toHtml(), 
    'active' => !$active 
    )); 

    return parent::_beforeToHtml(); 
} 
11

爲什麼不

$this->_redirect('*/*/', array('active_tab' => 'list_untranslated')); 
+0

輝煌,謝謝! – EOB

相關問題