Настраиваемое поле для страницы CMS в Magento - PullRequest
2 голосов
/ 05 сентября 2011

Я добавил новое поле в 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 ]

2 голосов
/ 06 сентября 2011

Мой коллега дал мне ответ на этот вопрос. Просто нужно добавить то же поле к этой таблице (enterprise_cms_page_revision) в базе данных тоже.

1 голос
/ 05 сентября 2011

Как вы добавили этот код?У меня была очень похожая проблема, но это потому, что я использовал событие 'adminhtml_cms_page_edit_tab_content_prepare_form'.

Оказывается, это событие получает отправленные значения -after-формы, установленные из данных модели:

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

}
...