Magento中CMS页面的自定义字段

时间:2011-09-05 10:37:46

标签: php magento attributes content-management-system

我向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()不想加载此字段值。 有人面对这个吗? 感谢。

2 个答案:

答案 0 :(得分:2)

我的同事给了我这个问题的答案。只需要在数据库中为此(enterprise_cms_page_revision)表添加相同的字段。

答案 1 :(得分:1)

您是如何添加此代码的?我有一个非常类似的问题,但那是因为我使用'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());
    }

}