Как использовать Платформу Зенда частичный помощник представления за пределами контроллера или представления?

Я хотел бы создать пользовательский класс, который генерирует электронное письмо HTML. Я хочу, чтобы содержание электронной почты прибыло из "почтового каталога" сценариев представления. Таким образом, понятие будет то, что я могу создать почтовый сценарий представления HTML тот же способ, которым я создал бы нормальный сценарий представления (способность указать переменные класса, и т.д.), и сценарий представления будет представлен как тело HTML электронной почты.

Например, в контроллере:

$email = My_Email::specialWelcomeMessage($toEmail, $firstName, $lastName);
$email->send();

My_Email::specialWelcomeMessage() функция сделала бы что-то вроде этого:

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) {
    $mail = new Zend_Mail();
    $mail->setTo($toEmail);
    $mail->setFrom($this->defaultFrom);
    $mail->setTextBody($this->view->renderPartial('special-welcome-message.text.phtml', array('firstName'=>$firstName, 'lastName'=>$lastName));
}

Идеально, было бы лучше, если я мог бы найти способ сделать specialWelcomeMessage() функционируйте действие, настолько легкое:

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) {
    $this->firstName = $firstName;
    $this->lastName = $lastName;
    //the text body and HTML body would be rendered automatically by being named $functionName.text.phtml and $functionName.html.phtml just like how controller actions/views happen
}

Который затем представил бы special-welcome-message.text.phtml и special-welcome-message.html.phtml сценарии:

<p>Thank you <?php echo $this->firstName; ?> <?php echo $this->lastName; ?>.</p>

Как я позвонил бы частичному помощнику представления от за пределами сценария представления или контроллера? Я приближаюсь к этому правильный путь? Или есть ли лучшее решение этой проблемы?

9
задан Andrew 16 July 2010 в 08:58
поделиться

1 ответ

Что насчет:

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) {
    $view = new Zend_View;
    $view->setScriptPath('pathtoyourview');
    $view->firstName = $firstName;
    $view->lastName = $lastName;
    $content = $view->render('nameofyourview.phtml');
    $mail = new Zend_Mail();
    $mail->setTo($toEmail);
    $mail->setFrom($this->defaultFrom);
    $mail->setTextBody($content);
}

Если вы хотите динамически изменять путь к скрипту с именами ваших действий, как вы сказали, почему бы не использовать получение имени действия или контроллера, который вы вызываете, и отправить его в качестве переменной, или, что еще лучше, параметра по умолчанию. Это поможет:

http://framework.zend.com/manual/en/zend.controller.request.html

12
ответ дан 2 November 2019 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: