我在CMS->页面内容->编辑页面->设计选项卡中添加了新字段
$designFieldset->addField('header_image', 'image', array(
'name' => 'header_image',
'label' => Mage::helper('cms')->__('Image'),
'title' => Mage::helper('cms')->__('Image'),
'disabled' => $isElementDisabled
));
然后我将这个字段添加到数据库的cms_page
表中,并添加代码到saveAction()
函数中。图片上传、保存正常
但是当我打开编辑页面时,函数getData()
不想加载这个字段值。有人遇到过这种情况吗?谢谢。
我的同事给了我这个问题的答案。只需要在数据库中添加相同的字段到这个(enterprise_cms_page_revision)表
您是如何添加这段代码的?我有一个非常类似的问题,但那是因为我使用的是'adminhtml_cms_page_edit_tab_content_prepare_form'事件。
结果是,在从模型数据设置表单值之后,该事件被分派:
$form->setValues($model->getData());
$this->setForm($form);
Mage::dispatchEvent('adminhtml_cms_page_edit_tab_content_prepare_form', array('form' => $form));
我的解决方案是:
class SomeCompany_SomeModule_Block_Cms_Page_Edit_Tab_Content_Observer {
public function someMethod($observer) {
$form = $observer->getEvent()->getForm();
$fieldset = $form->getElement('content_fieldset');
$fieldset->addField('some_field', 'text', array(
'name' => 'some_field',
'label' => Mage::helper('cms')->__('Some Field'),
'title' => Mage::helper('cms')->__('Some Field')
));
/*
* Magento amazingly does this BEFORE firing the event, so it will not
* populate fields added inside the observer, so call it again to populate
* our custom fields.
*/
$form->setValues(Mage::registry('cms_page')->getData());
}
}