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

예는 '활성'을 변경하여 그렇게 할 수 있습니다 => _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