2016-02-08 2 views
0

Это предопределенная функция сообщения внутри контроллера Magento.Значение, не получающее связывание в контроллере Magento

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; //orignal code 
        $error = false; 

      } 

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

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

      Mage::log($postObject); 
      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('*/*/'); 
    } 
} 

Когда я вхожу атрибут producturl, он печатает правильный view.But Я не получить это значение в моей электронной почте. Как получить привязанность к этому значению, чтобы он отправил письмо по электронной почте?

Моя форма выглядит следующим образом:

<form action="<?php echo $this->getUrl('contacts/index/post'); ?>" id="contactForm" method="post"> 
<div class="row"> 
     <div class="col-sm-12"> 
      <!--<label for="name" class="required"><em>*</em><?php echo Mage::helper('contacts')->__('Name') ?></label>--> 
      <div class="input-box"> 
       <input name="name" id="name" placeholder="Name*" title="<em>*</em><?php echo Mage::helper('contacts')->__('Name') ?>" value="<?php echo $this->escapeHtml($this->helper('contacts')->getUserName()) ?>" class="input-text required-entry" type="text" /> 
      </div> 
     </div> 
     <div class="col-sm-12"> 
      <!--<label for="email" class="required"><em>*</em><?php echo Mage::helper('contacts')->__('Email') ?></label>--> 
      <div class="input-box"> 
       <input name="email" id="email" placeholder="Email*" title="<?php echo Mage::helper('contacts')->__('Email') ?>" value="<?php echo $this->escapeHtml($this->helper('contacts')->getUserEmail()) ?>" class="input-text required-entry validate-email" type="text" /> 
      </div> 
     </div> 
     <div class="col-sm-12"> 
      <!--<label for="telephone" class="required"><em>*</em><?php echo Mage::helper('contacts')->__('Mobile') ?></label>--> 
      <div class="input-box"> 
       <input name="telephone" id="telephone" placeholder="Mobile*" title="<?php echo Mage::helper('contacts')->__('Telephone') ?>" value="" class="input-text required-entry" type="text" /> 
      </div> 
     </div> 

     <div class="col-sm-12"> 

      <div class="input-box"> 
       <input name="producturl" id="producturl" placeholder="Product URL*" title="<?php echo Mage::helper('contacts')->__('ProductURL') ?>" value="url hai bhai" class="input-text required-entry" type="text" /> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col-sm-12"> 
      <!--<label for="comment" class=""><?php echo Mage::helper('contacts')->__('Comment') ?></label>--> 
      <div class="input-box input-textarea"> 
       <textarea name="comment" id="comment" rows="3" placeholder="Message" title="<?php echo Mage::helper('contacts')->__('Comment') ?>" class=" input-text" placeholder="<?php echo Mage::helper('contacts')->__('Comment') ?>" style="width: 100%; height: 15%;resize:none;"></textarea> 
      </div> 
     </div> 
    </div> 

    <div class="row" style="text-align: center"> 
     <div class="col-sm-12" style="padding-top:2%"> 
      <input type="text" name="hideit" id="hideit" value="url hai bhai" style="display:none !important;" /> 
      <button type="submit" title="<?php echo Mage::helper('contacts')->__('Submit') ?>" class="button"><span><span><?php echo Mage::helper('contacts')->__('BOOK A DESIGNER') ?></span></span></button> 
     </div> 
</div> 
</div> 

    </div> 

+0

Что именно вы хотите сделать? Из того, что я понял, вы пытаетесь добавить атрибут продукта, в тело электронной почты? –

+0

это не атрибут продукта, его URL-адрес продукта, всякий раз, когда я нажимаю submit, я получаю имя, телефон и комментарий в своем письме, но я не получаю URL-адрес продукта. Я также хочу URL-адрес продукта в моей электронной почте. Я также добавил форму, которая используется. Прямо сейчас текстовое поле url продукта имеет жестко заданное значение. – zomato

+0

Вы используете эту форму на странице просмотра продукта? –

ответ

0

Итак, шаблоны электронных писем являются HTML файлов, которые вы можете найти в папке app/locale/[some_locale]/template/, если ваша локаль английская в США, тем some_locale будет en_US, если это французское из Бельгии, то это будет fr_BE, так что - код языка на 2 буквы, как определено ISO 639-1, а затем символ подчеркивания _ и код страны, как определено ISO 3166-1 alpha-2.

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

Так вот contacts_email_email_template фактически определяется в app/code/core/Mage/Contacts/etc/config.xml как файл contact_form.html:

<template> 
    <email> 
     <contacts_email_email_template translate="label" module="contacts"> 
      <label>Contact Form</label> 
      <file>contact_form.html</file> 
      <type>text</type> 
     </contacts_email_email_template> 
    </email> 
</template> 

Так что, если вы идете и редактировать app/locale/en_US/template/email/contact_form.html что я воспроизведен здесь ниже, и в котором я добавил свою ценность URL-адрес продукта, который должен работать :

<[email protected] Contact [email protected]> 
<[email protected] 
{"var data.name":"Sender Name", 
"var data.email":"Sender Email", 
"var data.telephone":"Sender Telephone", 
"var data.comment":"Comment"} 
@--> 
Name: {{var data.name}} 
Email: {{var data.email}} 
Telephone: {{var data.telephone}} 

Comment: {{var data.comment}} 
<!-- this bellow line is actually what you are after --> 
Product URL : {{var data.producturl}} 

data, на самом деле является ключом массива вы передаете в качестве пятого аргумента функции sendTransactional

+0

Я уже понял это, в любом случае спасибо – zomato

0

Ну, если вы хотите добавить URL продукта на адрес электронной почты в первую очередь необходимо, чтобы получить ключ продукта и обернуть его вокруг статической функции GetURL.

Mage::getUrl($_product->getUrlKey()) 

Следующая просто присвоить вышеприведенный код переменной и использовать некоторые JQuery/JavaScript для добавления URL в конец содержимого тела сообщения. Честно говоря, я бы не рекомендовал вам это делать.

Смежные вопросы