2013-10-14 4 views
0

мне нужно руководство от всех вас ..Модифицированный Mage_Sales_Model_Order

У меня есть этот дополнительный метод внутри: Mage_Sales_Model_Order (это в локальной папке).

public function getShippingEmailAdd() 
{ 
    $ShippingEmailAdd=''; 
    $postData = Mage::app()->getRequest()->getPost(); 
    if (!isset($ShippingEmailAdd)) 
    { 
     if (isset($postData['shipping:email'])) { 
      $ShippingEmailAdd =$postData['shipping:email']; 
     }else{ 
      $ShippingEmailAdd = '[email protected]'; 
     } 
     // $shipment_data = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getData(); 
     // $ShippingEmailAdd = $shipment_data; 
    } 



    return $ShippingEmailAdd; 
} 

Этот метод ориентирован на получение отгрузочного [email] ввода от одной страницы. а также добавили одну строку по методу: samefile :: sendNewOrderEmail()

$mailer->setTemplateParams(array(
      'order'  => $this, 
      'billing'  => $this->getBillingAddress(), 
      'payment_html' => $paymentBlockHtml, 
      'emailadd' => $this->getShippingEmailAdd() <--- added line 
     ) 
    ); 

так, что я мог бы использовать {{уаг emailadd}} в порядке _ * HTML шаблоны.. но ничего не получаю, что я сделал не так? и каков будет правильный подход к достижению моей цели?

UPDATE, как просил: это входной адрес электронной почты, исходя из формы отгрузки, которая является частью OnePage процесса проверки:

<li> 
      <div class="input-box"> 
       <label for="shipping:emailadd"><?php echo $this->__('Email Address') ?> <span class="required">*</span></label><br /> 
       <input type="text" name="shipping[email]" id="shipping:emailadd" value="<?php echo $this->htmlEscape($this->getAddress()->getEmail()) ?>" title="<?php echo $this->__('Email Address') ?>" class="validate-email required-entry input-text" /> 
      </div> 
      <div class="input-box"> 
       <label for="shipping:emailadd"><?php echo $this->__('Confirm Email') ?> <span class="required">*</span></label><br /> 
       <input type="text" name="shipping[emailconfirm]" id="shipping:emailconfirm" value="<?php echo $this->htmlEscape($this->getAddress()->getEmail()) ?>" title="<?php echo $this->__('Email Address') ?>" class="validate-email required-entry input-text" /> 
      </div> 
     </li> 

и снова, что я прицеливание, чтобы получить поле электронной почты вход после завершения процесса оформления заказа был отправлен и добавить значение доставка [почта] в Mage_Sales_Model_Order :: getShippingEmailAdd(), так что, когда я использую его по методу age_Sales_Model_Order :: sendNewOrderEmail(), как это:

$mailer->setTemplateParams(array(
      'order'  => $this, 
      'billing'  => $this->getBillingAddress(), 
      'payment_html' => $paymentBlockHtml, 
      'emailadd' => $this->getShippingEmailAdd() <------ like this 
     ) 
    ); 

так Я могу использовать его в шаблонах писем _ * .html как {{var emailadd}}

вот и все.

ответ

1

getShippingEmailAdd() вернется ''

Код в заявлении, если не будет выполнено.

$ShippingEmailAdd=''; 

if (!isset($ShippingEmailAdd)) 
{ 
    // remove your code from here 
    $ShippingEmailAdd = 'executed'; 
} 
else{ 
    $ShippingEmailAdd = 'not executed'; 
} 

echo $ShippingEmailAdd; 

Вы испытаете здесь http://writecodeonline.com/php/

Попробуйте

public function getShippingEmailAdd() 
{ 
    $postData = Mage::app()->getRequest()->getPost(); 

    if (isset($postData['shipping:email'])) { // <- double check your form field name 
     $ShippingEmailAdd =$postData['shipping:email']; 
    }else{ 
     $ShippingEmailAdd = '[email protected]'; 
    } 

    return $ShippingEmailAdd; 
} 
+0

как глупо ... прости за плохую логику коды .. мой плохой – Derek

+0

Он выводит [email protected], hmmm ... Кстати @RS У меня есть этот '$ shipment_data = Mage :: getSingleton ('checkout/session') -> getQuote() -> getShippingAddress() -> getData();' он возвращает этот объект ArrayObject, когда print_r ($ shipment_data) 'Array ([address_id] => 1680 [quote_id] => 467 [created_at] => 2010-06-09 16: 12: 3 9 [updated_at] => 2010-06-09 16:22:34 [customer_id] => [save_in_address_book] => 0 [customer_address_id] => [address_type] => отправка [email] => ' как я могу получить стоимость доставки [email] в $ shipment_data? довольно смущает. пробовать другой способ, который был прокомментированной строкой выше. – Derek

+0

Имейте в виду, что вы имеете дело с Mage_Sales_Model_Order' ('order'), а не 'Quote', это не сработает, если вы попытаетесь повторно отправить электронную почту от администратора. Вы можете захотеть добавить поле в таблицу заказов. –

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