Magento标签页更改/重定向

4
我有一个页面,其中包含两个选项卡,一个是搜索选项卡,另一个是数据库网格选项卡。当用户编辑网格中的某个项目后,我希望他们仍停留在网格选项卡上,而不是第一个顺序的表单选项卡。
有没有办法通过代码更改页面上活动选项卡?
这是选项卡的代码:
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('*/*/');
}

当然有方法可以解决这个问题。不幸的是,您没有发布导致问题的代码,因此没有人能真正帮助或建议您任何内容。在Stack Overflow上,问题通常与编程或软件开发相关,并且应符合faq中定义的范围。 - Anton S
2个回答

12

为什么不直接

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

6
你可以通过在_beforeToHtml()中更改“active”=> true / false 属性来实现。只需在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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接