2012-02-02 11 views
0

Magento 1.6.2用に少し拡張しました。私はバックエンドシステムにコードを書き込んでデータベースにEAVモデルを作成しました。このチュートリアルのように、EAVモデルを作成/読み込めます:http://www.pierrefay.com/magento-admin-gridview-85Magentoで独自のフロントエンドを作成する方法1.6.2

フロントエンドシステムで次のフォームを使用するにはどうすればよいですか? 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

マゼンタのフロントエンドフォームはすべてハードコードされています。提供されたクラスでわかるように、これはAdminhtmlモジュール(Mage_Adminhtml_Block_Widget_Form)の一部です。これは、マゼンタ内の管理ダッシュボード用です。

あなたのコードのようなフォームクラスを統合するための開発の量は、ほとんどの場合、ハードコードされたフロントエンドフォームの時間や柔軟性に値するものではありません。継続的な開発の大半がフォームを中心に展開している場合は、コントローラを使用してフォームを作成するための抽象的なフォームクラスを構築することを再考します。

Magentoは、フロントエンド用のかなり適切なjavascript検証システムを提供しています。

+1

"フロントエンドでオブジェクト指向フォームクラスを利用すると、モジュール、レイアウト、テンプレート、ブロック間の関係が壊れる"という記述は間違っています。 Adminhtmlはフロントエンドと同じレンダリングエンジンでレンダリングされ、* all *テンプレートはブロッククラスでレンダリングされます。 – benmarks

2

Magento/Varienの元のフォーム実装の後に来たZend_Formを調べる必要があります。

関連する問題