2011-10-06 57 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

相关问题