2016-10-18 10 views
0

twigとswiftmailerでスリム3アプリケーションを設定するだけです。Twigテンプレートデータswiftmailer

私は、顧客テーブルからメールアドレスと名前を取得するためにMailControllerを作った。それはすごくうまくいき、私が作成したtwigテンプレートを使って、適切なアドレスにメールを送る。しかし、問題は、私は小枝でセットアップしたデータです。

私のコントローラのコードはここに

<?php 

namespace Cart\Controllers; 

use Slim\Router; 
use Slim\Views\Twig; 
use Cart\Models\Order; 
use Cart\Models\Product; 
use Cart\Models\Address; 
use Cart\Models\Delivery; 
use Cart\Models\Customer; 
use Psr\Http\Message\ResponseInterface as Response; 
use Psr\Http\Message\ServerRequestInterface as Request; 

/** 
* @return MailController 
*/ 
class MailController 
{ 
    protected $transport; 
    protected $mailer; 
    private $view; 

    public function __construct(Twig $view) 
    { 
     $this->view = $view; 

     // Create Transport 
     $https['ssl']['verify_peer'] = FALSE; 
     $https['ssl']['verify_peer_name'] = FALSE; 

     $this->transport = \Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls') 
      ->setUsername(username) 
      ->setPassword(password) 
      ->setStreamOptions($https) 
      ; 
     // Create Mailer with our Transport. 
     $this->mailer = \Swift_Mailer::newInstance($this->transport); 

    } 

    public function mailLisbeth($hash) 
    { 

     // // Here I'm fetching my email template from my template directory. 
     $welcomeEmail = $this->view->fetch('mail/order.twig'); 

     $mailorder = Order::with('customer', 'address', 'products')->where('hash', $hash)->first(); 

     // Setting all needed info and passing in my email template. 
     $message = \Swift_Message::newInstance('Ordre fra Webshop') 
         ->setFrom(array('[email protected]' => 'Kent')) 
         ->setTo(array(
          $mailorder->customer->email => $mailorder->customer->name, 
         )) 
         ->setBody($welcomeEmail) 
         ->setContentType("text/html"); 
     // Send the message 
     $results = $this->mailer->send($message); 
    } 
} 

そして、私の小枝のテンプレートである彼女の

<div class="row"> 
    <div class="col-md-12"> 
     <h3>Order #{{ mailorder.order.id }}TEST</h3> 
     <hr> 
     <div class="row"> 
     <div class="col-md-6"> 
      <h4>Kunde:</h4> 
      {{ mailorder.customer.name }}<br> 
      {{ mailorder.customer.email }}<br> 
      <h4>Leveringsadresse:</h4> 
      {{ mailorder.address.address1 }}<br> 
      {{ mailorder.address.address2 }}<br> 
      {{ mailorder.address.city }}<br> 
      {{ mailorder.address.postal_code }}<br> 
      <h4>Leveringstidspunkt:</h4> 
      {{ mailorder.delivery.delivery }}<br> 
      {{ mailorder.delivery.deliverydate }}<br> 
      {{ mailorder.delivery.deliverytime }}<br> 

     </div> 
     <div class="col-md-6"></div> 
      <h4>Varer:</h4> 
      {% for product in customer.products %} 
      <a href="{{ path_for('product.get', {slug: product.ID })}}">{{ product.Navn }}</a> (x {{ product.pivot.quantity}})<br> 
      {% endfor %} 
     </div> 
     <hr> 
     <p> 
     Levering: DKK 150,00 <br> 
     <strong>Order total: DKK {{ order.total | number_format(2,',','.')}}</strong> 
     </p> 
    </div> 
    </div> 

問題は小枝テンプレートに通信販売変数の欠落通過である可能性があります - しかし以来I別のページで同じ設定と変数を使用しました - なぜそれが小枝テンプレートに入らないのかわかりません。

誰かが手がかりを持っている希望...おかげで

答えて

0

私の知る限り見ることができるように、あなたはあなたのテンプレートをレンダリングされていません。代わりに、twigファイルをswiftmailerに渡すだけです。

私はそれがスリムに正確にどのように動作するかわからないが、あなたはおそらくその後ではSwiftMailerに結果を渡す

$twig->render($welcomeEmail, ['mailorder' => $mailorder]); 

ような何かをしなければなりません。

+0

これは完璧に機能しました。ありがとうございます。 –