2012-03-23 4 views
0

사용자 정의 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('*/*/'); 
     } 
    } 

} 
관련 문제