自定义字段的CMS页面在Magento


Custom field for CMS page in Magento

我在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());
    }
}