2012-03-23 28 views
0

我如何創建自定義Magento表單?我不需要任何提及聯繫表單的擴展或樣例。我的意思是我需要了解Magento如何與修改後的Zend表單處理程序一起工作。如何創建完整的自定義表單

所以,問題是:

是否有人在控制器創造了Magento的代碼示例?

回答

0
<?php 

class Mage_Contacts_IndexController extends Mage_Core_Controller_Front_Action 
{ 

    const XML_PATH_EMAIL_RECIPIENT = 'contacts/email/recipient_email'; 
    const XML_PATH_EMAIL_SENDER  = 'contacts/email/sender_email_identity'; 
    const XML_PATH_EMAIL_TEMPLATE = 'contacts/email/email_template'; 
    const XML_PATH_ENABLED   = 'contacts/contacts/enabled'; 

    public function preDispatch() 
    { 
     parent::preDispatch(); 

     if(!Mage::getStoreConfigFlag(self::XML_PATH_ENABLED)) { 
      $this->norouteAction(); 
     } 
    } 

    public function indexAction() 
    { 
     $this->loadLayout(); 
     $this->getLayout()->getBlock('contactForm') 
      ->setFormAction(Mage::getUrl('*/*/post')); 

     $this->_initLayoutMessages('customer/session'); 
     $this->_initLayoutMessages('catalog/session'); 
     $this->renderLayout(); 
    } 

    public function postAction() 
    { 
     $post = $this->getRequest()->getPost(); 
     if ($post) { 
      $translate = Mage::getSingleton('core/translate'); 
      /* @var $translate Mage_Core_Model_Translate */ 
      $translate->setTranslateInline(false); 
      try { 
       $postObject = new Varien_Object(); 
       $postObject->setData($post); 

       $error = false; 

       if (!Zend_Validate::is(trim($post['name']) , 'NotEmpty')) { 
        $error = true; 
       } 

       if (!Zend_Validate::is(trim($post['comment']) , 'NotEmpty')) { 
        $error = true; 
       } 

       if (!Zend_Validate::is(trim($post['email']), 'EmailAddress')) { 
        $error = true; 
       } 

       if (Zend_Validate::is(trim($post['hideit']), 'NotEmpty')) { 
        $error = true; 
       } 

       if ($error) { 
        throw new Exception(); 
       } 
       $mailTemplate = Mage::getModel('core/email_template'); 
       /* @var $mailTemplate Mage_Core_Model_Email_Template */ 
       $mailTemplate->setDesignConfig(array('area' => 'frontend')) 
        ->setReplyTo($post['email']) 
        ->sendTransactional(
         Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE), 
         Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER), 
         Mage::getStoreConfig(self::XML_PATH_EMAIL_RECIPIENT), 
         null, 
         array('data' => $postObject) 
        ); 

       if (!$mailTemplate->getSentSuccess()) { 
        throw new Exception(); 
       } 

       $translate->setTranslateInline(true); 

       Mage::getSingleton('customer/session')->addSuccess(Mage::helper('contacts')->__('Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.')); 
       $this->_redirect('*/*/'); 

       return; 
      } catch (Exception $e) { 
       $translate->setTranslateInline(true); 

       Mage::getSingleton('customer/session')->addError(Mage::helper('contacts')->__('Unable to submit your request. Please, try again later')); 
       $this->_redirect('*/*/'); 
       return; 
      } 

     } else { 
      $this->_redirect('*/*/'); 
     } 
    } 

} 
相關問題