2012-02-02 67 views
0

我已经为Magento 1.6.2做了一点扩展。我设法在后端系统中编写代码以创建一个EAV模型到数据库,并且我可以像本教程一样从其写入/读取项目:http://www.pierrefay.com/magento-admin-gridview-85如何使自己的前端表格与Magento 1.6.2

如何在前端系统中使用以下窗体.. ..我看到有没有类像Mage_Adminhtml_Block_Widget_Form。我不想使用自己的HTML构造,想要让我想要Magento的外观和感觉。有没有人有想法如何使用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前端表格都是硬编码的。正如您在提供的类中所看到的,它是Admingent模块(Mage_Adminhtml_Block_Widget_Form)的一部分,该模块用于magento中的管理仪表板。

在您的代码中集成表单类的开发量不值得花时间或硬编码前端表单的灵活性......在大多数情况下。如果大部分的持续发展都围绕着形式展开,那么我会重新考虑构建抽象表单类,以帮助通过控制器创建表单。

更高级的说明,Magento确实为您的前端提供了相当不错的javascript验证系统。

+1

“在前端使用面向对象的类形式会破坏模块,布局,模板和块之间的关系”是一个不正确的陈述。 Adminhtml通过与前端相同的呈现引擎呈现,* all *模板通过块类呈现。 – benmarks 2012-02-02 20:54:05

2

你应该看看Zend_Form,它是在Magento/Varien的原始形式实现后出现的。