2012-02-02 6 views
0

Я сделал небольшое расширение для Magento 1.6.2. Мне удалось написать код в бэкэнд-системе, чтобы создать модель EAV для базы данных, и я могу писать/читать элементы из нее, как этот учебник: http://www.pierrefay.com/magento-admin-gridview-85Как создать собственный интерфейс с Magento 1.6.2

Как я могу использовать следующие формы в системе frontends, ... У вас есть такие классы, как Mage_Adminhtml_Block_Widget_Form. Я не хочу использовать собственные HTML-конструкции, хочу получить, я хочу, чтобы Magento выглядел и чувствовал. У кого-нибудь есть идея, как создавать собственные формы в интерфейсе magento с пурпурными классами?

class Extension_Name_Adminhtml_Printcatalog_Edit_General_Form extends Mage_Adminhtml_Block_Widget_Form 
{ 

    protected function _prepareForm() 
    { 
     $form = new Varien_Data_Form(); 
     $this->setForm($form); 
     $fieldset = $form->addFieldset('printcatalog_form', 
         array('legend' => __('Allgemeine Informationen'))); 

     $fieldset->addField('catalog_name', 'text', 
       array(
        'label' => __('Katalogname'), 
        'class' => 'required-entry', 
        'required' => true, 
        'name' => 'catalog_name', 
     )); 

     $fieldset->addField('release_date', 'text', 
       array(
        'label' => __('Erscheinungsdatum'), 
        'class' => 'required-entry', 
        'required' => true, 
        'name' => 'release_date', 
//          'image' => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'/adminhtml/default/default/images/grid-cal.gif', 
//          'format' => 

Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT), 
      )); 

     if (Mage::registry('printcatalog_data')) 
     { 
      $form->setValues(Mage::registry('printcatalog_data')->getData()); 
     } 

     return parent::_prepareForm(); 
    } 

} 

?> 

ответ

2

Невозможно из коробки, все лицевые формы magento жестко закодированы. Как вы можете видеть в классе, который вы предоставили, он является частью модуля Adminhtml (Mage_Adminhtml_Block_Widget_Form), который предназначен для панели управления администратора в magento.

Объем разработки для интеграции класса формы, как в вашем коде, не стоит времени или гибкости жесткокодовой интерфейсной формы ... в большинстве случаев. Если бы большинство ваших дальнейших разработок зависело от форм, я бы передумал строить классы абстрактных форм, чтобы помочь в создании ваших форм через контроллер.

На высшей ноте Magento действительно предоставляет довольно приличную систему проверки JavaScript для вашего front-end.

+1

«Использование классов объектно-ориентированной формы на интерфейсе приведет к поломке отношений между модулями, макетами, шаблонами и блоками» - это неверный оператор. Adminhtml визуализируется с помощью того же механизма рендеринга, что и frontend, а * все * шаблоны визуализируются через класс блоков. – benmarks

2

Вы должны изучить Zend_Form, который появился после первоначальной формы оригинала Magento/Varien.