具有选项卡字段集问题的Magento表单

时间:2014-12-31 12:34:01

标签: magento

我正在为我的商店编写一个自定义的Magento模块,我在一个表单中面临一个奇怪的问题。表单分配给选项卡,但是字段集从容器顶部开始,而不是从按钮区域下方开始。请参阅附图 Problematic fieldset

我希望它显示如下: 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;

我相信我错过了一些愚蠢的话。任何帮助表示赞赏。

干杯 保罗

1 个答案:

答案 0 :(得分:0)

我已经解决了问题,但仍然不知道原因。我只是将所有内容重写到另一个文件夹中更改类名,在控制器中创建另一个名为testAction的操作,因此DirectTweet文件夹中的所有文件都位于Message文件夹中,猜猜是什么?当您从testActoin显示该表单时,它可以正常工作,当我从DirectTweet文件夹显示旧表单时 - fieldset已损坏。

我一直禁用magento缓存,我清除了所有tmp,缓存,会话文件夹,清除浏览器缓存并且没有运气修复它,所以我想知道为什么新的“版本”工作即使没有除了化妆品之外的代码更改(删除空行,或更改标签/标题的文本)。

在过去的20分钟里,我在phpstorm中逐个文件进行比较,除了类名和文本之外,没有任何差别可以输出......我已经厌倦了再考虑它了。

低于期望的输出:)

新年快乐 保罗

enter image description here