在哪里设置Zend2 Partial View的数据?

时间:2013-12-27 12:35:31

标签: zend-framework2 partial-views

让我假装我的视图显示为:

<?php 
    echo $this->partial( 'site/testimonials/partial.phtml', array() ); 
?>
<?php

假设我有一个名为“推荐”的表,此视图的目的是仅在另一个视图中显示数据库中的最新推荐。

在此过程中,我将指定数据必须来自何处?我是否将其传递给$ this-&gt; partial,还是有更好更正确的方法将db查询逻辑放在局部视图中?这是一个视图,所以没有逻辑与它相关联,但是如何为它分配“推荐模型”,并在显示此视图时让它自动从数据库中获取数据?

简称

如果我想避免将变量(例如最新的推荐ID)传递给局部视图,我在哪里放置逻辑以获取最新的推荐?

1 个答案:

答案 0 :(得分:2)

对于这样的任务,我认为最好是制作视图助手。

内部Module.php类:

<?php

use Zend\View\Model\ViewModel;

public function getViewHelperConfig()
{
    return array(
        'most_recent_testimonials' => function($helperPluginManager){
            $serviceLocator = $helperPluginManager->getServiceLocator();

            $view = new ViewModel();
            $view->setTerminal(true);
            $view->setTemplate('site/testimonials/partial.phtml');

            /*
             * There you may get all data you need using $serviceLocator
             */

            // inject data into template
            $view->setVariables(array(
                ...
            );

            // render template
            $template_rendered =
                $serviceLocator ->get('viewrenderer')
                ->render($view);

            return $template_rendered;
        }
    );
}

内幕:

<?php echo $this->most_recent_testimonials(); ?>