我正在为我的商店编写一个自定义的Magento模块,我在一个表单中面临一个奇怪的问题。表单分配给选项卡,但是字段集从容器顶部开始,而不是从按钮区域下方开始。请参阅附图
我希望它显示如下:
这个模块是在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 :(得分:0)
我已经解决了问题,但仍然不知道原因。我只是将所有内容重写到另一个文件夹中更改类名,在控制器中创建另一个名为testAction的操作,因此DirectTweet文件夹中的所有文件都位于Message文件夹中,猜猜是什么?当您从testActoin显示该表单时,它可以正常工作,当我从DirectTweet文件夹显示旧表单时 - fieldset已损坏。
我一直禁用magento缓存,我清除了所有tmp,缓存,会话文件夹,清除浏览器缓存并且没有运气修复它,所以我想知道为什么新的“版本”工作即使没有除了化妆品之外的代码更改(删除空行,或更改标签/标题的文本)。
在过去的20分钟里,我在phpstorm中逐个文件进行比较,除了类名和文本之外,没有任何差别可以输出......我已经厌倦了再考虑它了。
低于期望的输出:)
新年快乐 保罗