我有一个简单的控制器操作,可以创建Guest
记录并呈现模板。
// First bind the form to our Guest:
$form->bind( $_POST, $guest );
// Validate and save, or show error messages
if( $form->isValid($_POST, $guest) ) {
if( $guest->save($_POST) ) {
$this->view->setMainView( 'confirm' );
}
}
在添加任何邮件之前,此工作正常。但是,当我在Guest
模型中添加一个恰好呈现模板的事件处理程序时,控制器会呈现一个白色屏幕而不是我的确认模板。
在Guest
模型中:
public function afterCreate() {
return GuestMailer::sendEmailConfirmation( $this );
}
在GuestMailer
课程中:
public static function sendEmailConfirmation( $guest ) {
// create/configure $email message
$view = $guest->getDI()->get('simpleView');
$view->render( // Works without this call...
'confirmation_email',
array( 'guest' => $guest )
);
$content = $view->getContent();
$email->content( $content );
return $email->send();
}
请注意,当我将上述调用移至render()
时,会成功呈现确认模板。
我认为Phalcon中的组件应该是高度分离的?为什么渲染一个完全不同的模板导致我的控制器视图搞砸了?我怎么能避免这个?
答案 0 :(得分:1)
我认为这个问题是由模板服务的特殊配置引起的,在正常的工作流程中它不会导致问题,当你需要像手机一样“手动”渲染模板时,它们会出现,你可以参考此PhalconPHP论坛讨论链接,特别是链接锚引用的答案: http://forum.phalconphp.com/discussion/109/manually-render-separate-file-template-#C12015