2014-12-31 2 views
0

Я пишу пользовательский модуль Magento для своего магазина, и у меня возникает странная проблема с набором полей в одной форме. Форма присваивается вкладке, однако набор полей начинается с вершины контейнера, а не из области ниже области кнопок. Пожалуйста, смотрите изображение прилагается Problematic fieldsetMagento Form with Tabs Fieldset Issue

Я хочу, чтобы показать, как: Desired Fieldset

Этот модуль разрабатывается на Magento 1.9.0.1 без каких-либо изменений вообще, только демонстрационные данные.

Ниже приведен код для всех классов: Контроллер: добавлен форма контейнера и вкладки для левой колонке

class Koala_Socialmanager_Adminhtml_TwitterController extends Mage_Adminhtml_Controller_Action { 
public function directTweetAction(){ 
    $this->loadLayout(); 
    $this->_addContent($this->getLayout()->createBlock('koala_socialmanager/twitter_directTweet_tweet','directTweet')) 
     ->_addLeft($this->getLayout()->createBlock('koala_socialmanager/twitter_directTweet_edit_tabs')); 
    $this->renderLayout(); 

Форма контейнера:

class Koala_Socialmanager_Block_Twitter_DirectTweet_Tweet extends Mage_Adminhtml_Block_Widget_Form_Container { 
public function __construct() 
{ 
    $this->_blockGroup = 'koala_socialmanager'; 
    $this->_controller = 'twitter_directTweet'; 
    $this->_headerText = Mage::helper('koala_socialmanager')->__('Direct Tweets'); 
    parent::__construct(); 
    $this->_updateButton('save', 'label', Mage::helper('adminhtml')->__('Tweet Now!')); 
} 

}

Вкладки:

class Koala_Socialmanager_Block_Twitter_DirectTweet_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs{ 
public function __construct(){ 
    parent::__construct(); 
    $this->setId('tweetTabs'); 
    $this->setDestinationElementId('edit_form'); 
    $this->setTitle(Mage::helper('koala_socialmanager')->__('Twitter')); 
} 
public function _beforeToHtml(){ 
    $this->addTab('form_section_form',array(
     'label' => Mage::helper('koala_socialmanager')->__("Tweet"), 
     'title' => Mage::helper('koala_socialmanager')->__("Tweet"), 
     'content' => $this->getLayout()->createBlock('koala_socialmanager/twitter_directTweet_edit_tabs_form')->initForm()->toHtml(), 
     'active' => true 
    )); 

    $this->addTab('form_section_external_media',array(
     'label' => Mage::helper('koala_socialmanager')->__("External Media"), 
     'title' => Mage::helper('koala_socialmanager')->__("External Media"), 
     'content' => $this->getLayout()->createBlock('koala_socialmanager/twitter_directTweet_edit_tabs_externalMedia')->initForm()->toHtml() 
    )); 
    $this->addTab('form_section_magento_media',array(
     'label' => Mage::helper('koala_socialmanager')->__("Magento Product Media"), 
     'title' => Mage::helper('koala_socialmanager')->__("Magento Product Media"), 
     'content' => $this->getLayout()->createBlock('koala_socialmanager/twitter_directTweet_edit_tabs_magentoProductMedia')->toHtml() 
    )); 
    return parent::_beforeToHtml(); 
} 

}

И форма с FIELDSET:

class Koala_Socialmanager_Block_Twitter_DirectTweet_Edit_Tabs_Form extends Mage_Adminhtml_Block_Widget_Form { 
public function __construct() 
{ 
    parent::__construct(); 
} 
public function initForm(){ 
    $form = new Varien_Data_Form(); 
    $this->setForm($form); 
    $form->setHtmlIdPrefix('socialmanager'); 


    $helper = Mage::helper('koala_socialmanager'); 
    $fieldset = $form->addFieldset('base_fieldset', array(
     'legend' => Mage::helper('koala_socialmanager')->__('Tweeter Message') 
    )); 
    $fieldset->addField('statusUpdate', 'textarea', array(
     'name'=>'tweet', 
     'label'=>$helper->__("Tweet this Message:"), 
     'after_element_html'=>'<div class="characterCounter">0</div>' 
    )); 
    Mage::helper('koala_socialmanager')->getTwitterFormScript(); 
    return $this; 

Я считаю, что я что-то глупое отсутствует. Любая помощь оценивается.

Приветствие Пол

ответ

0

Я решил проблему, до сих пор не знают причины, хотя. Я просто переписал все в другую папку, изменив имена классов, создал другое действие в контроллере с именем testAction, поэтому все файлы из папки DirectTweet находятся в папке «Сообщения» и угадайте, что? когда вы показываете эту форму из testActoin, она работает так, как должна, когда я показываю старую форму из папки DirectTweet, - сломанный набор сломан.

У меня есть кэш-память мафиота все время, я очистил все tmp, кеш, папки сеансов, очищенный кеш браузера и не повезло с его исправлением, поэтому мне интересно, почему новая «версия» работает, даже если есть никаких изменений в коде, кроме косметических (удаление пустых строк или изменение текста для ярлыков/заголовков).

За последние 20 минут я сравнивал файл по файлу в phpstorm и серьезно не отличался от имен классов и текстов для вывода ... Я устал думать об этом больше.

Ниже желаемый результат :)

С Новым годом Пол

enter image description here