邮件程序中的Phalcon \ Mvc \ View \ Simple :: render()导致WSOD

时间:2015-04-13 23:40:44

标签: phalcon

我有一个简单的控制器操作,可以创建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中的组件应该是高度分离的?为什么渲染一个完全不同的模板导致我的控制器视图搞砸了?我怎么能避免这个?

1 个答案:

答案 0 :(得分:1)

我认为这个问题是由模板服务的特殊配置引起的,在正常的工作流程中它不会导致问题,当你需要像手机一样“手动”渲染模板时,它们会出现,你可以参考此PhalconPHP论坛讨论链接,特别是链接锚引用的答案: http://forum.phalconphp.com/discussion/109/manually-render-separate-file-template-#C12015