ZF2 - 如何在触发事件中呈现phtml文件?

时间:2013-08-25 11:35:47

标签: zend-framework2

我需要在触发事件中呈现一个phtml文件。

我的代码是:

class Module
{
//...
    public function onBootstrap(MvcEvent $e) {
        $app = $e->getApplication ();
        $sem = $app->getEventManager ()->getSharedManager ();   
        $sem->attach ( 'Events', 'onExampleEvent', function ($e) {
            return 'html...';
        } );
    }
//...
}

如何用渲染的phtml文件替换html...

1 个答案:

答案 0 :(得分:2)

要渲染您的phtml文件,您必须执行以下几个步骤:

  1. 创建一个可容纳变量容器的ViewModel对象。如果你需要一些变量,只需将它们作为数组传递。

    $content = new \Zend\View\Model\ViewModel(array('article' => $article));
    
  2. 指定要与setTemplate一起使用的模板。

  3. 使用ViewRenderer将ViewModel数据与相应的模板合并,并返回rendred html。
  4. 以下编辑的代码符合您的需求

    class Module
    {
    //...
        public function onBootstrap(MvcEvent $e) {
            $app = $e->getApplication ();
    
            $sm  = $app->getServiceManager();
    
            $sem = $app->getEventManager ()->getSharedManager ();   
            $sem->attach ( 'Events', 'onExampleEvent', function ($e) {
    
                $content = new \Zend\View\Model\ViewModel();
                $content->setTemplate('your/template.phtml');  
    
                return $sm->get('ViewRenderer')->render($content);                                           
    
            });
        }
    //...
    }
    

    Doc:http://framework.zend.com/manual/2.0/en/modules/zend.view.quick-start.html