2016-03-30 9 views
0

Belirli bir şablonla (e-postanın ana görünümü, ör. 2 sütun düzeni vb.) Belirli bir "düzen" (üstbilgi/altbilgi için) içeren bir e-posta göndermeye çalışıyorum.Bir alt görünümle görünüm oluşturulsun mu?

$mainView html'de: <?= $this->content ?> html, ancak tüm değişkenlerle birlikte $childView html olması gerektiğinde bu her zaman NULL'tır. İşte

bir MailService.php dosyada ben ne var:

public function createMessage($to, $subject, $template, $variables) : Message 
{ 
    // Create mail 
    $message = new Message(); 

    // Create mail body 
    $mainView = new ViewModel(); 
    $mainView->setTerminal(true); 
    $mainView->setTemplate('layout/mail.phtml'); 

    $childView = new ViewModel(); 
    $childView->setTerminal(true); 
    $childView->setTemplate($template); 
    $childView->setVariables($variables); 

    $mainView->addChild($childView, 'content'); 

    $msgRender = $this->viewRenderer->render($mainView); 

    $body = new Part($msgRender); 
    $body->setType(Mime::TYPE_HTML); 

    $messageBody = new MessageBody(); 
    $messageBody->addPart($body); 
    $message->setBody($messageBody); 

    $message->setTo($to); 
    $message->setSubject($subject); 

    return $message; 
} 

$this->viewRenderer Fabrikası enjekte edilir:

o çalışma var
/** @var RendererInterface $viewRenderer */ 
$viewRenderer = $serviceLocator->get('viewrenderer'); 
+0

, sadece kontrol benim çalışma kodları için bu görünüm değişken olarak işlemek ayarlamak zorunda kaldı ve ben onun içinde childView kullanmayın fark! !! Afedersiniz! (ZF2 çok zor, bu gerçek bir acı! Her ne zaman böyle bir problem görüyorsam, neden Meteor için döktüğümü hatırlıyorum! Gerçek hikaye!) –

cevap

0

Tamam! :) Sonra childView işlemek mainView

public function createMessage($to, $subject, $template, $variables) : Message 
{ 
    // Create mail 
    $message = new Message(); 

    // Create mail body 
    $mainView = new ViewModel(); 
    $mainView->setTerminal(true); 
    $mainView->setTemplate('layout/mail.phtml'); 

    $childView = new ViewModel(); 
    $childView->setTemplate($template); 
    $childView->setVariables($variables); 
    $childRender = $this->viewRenderer->render($childView); // render child 

    $mainView->setVariable('content', $childRender); // set childRender to mainView 

    $msgRender = $this->viewRenderer->render($mainView); 

    $body = new Part($msgRender); 
    $body->setType(Mime::TYPE_HTML); 

    $messageBody = new MessageBody(); 
    $messageBody->addPart($body); 
    $message->setBody($messageBody); 

    $message->setTo($to); 
    $message->setSubject($subject); 

    return $message; 
} 
yardım etmek istiyorum
+0

3 dk çok geç özür dilerim, evet gördüğünüz gibi çocuk bakışı modelleri terminal kullanmamalı onun desen ile konsensu beri. Test ettiğimde, bir hata mesajı aldınız mı? – KatsuoRyuu

+0

Hmm, sanırım varsayılan hata raporlarım var, herhangi bir hata alıp alamayacağımı deneyebilirim ama bunun benim için çalıştığını biliyorum: s – dan2k3k4