Zend framework2 视图中的ZF2视图

Zend framework2 视图中的ZF2视图,zend-framework2,Zend Framework2,我想创建一个具有以下行为的接口: HTML output for /a/. <ul> <li>html output for /a/1/</li> <li>html output for /a/2/</li> <li>html output for /a/3/</li> </ul> /a/的HTML输出。 /a/1的html输出/ /a/2的html输出/ /a/3的html输出/ 因此,猜测

我想创建一个具有以下行为的接口:

HTML output for /a/.
<ul>
<li>html output for /a/1/</li>
<li>html output for /a/2/</li>
<li>html output for /a/3/</li>
</ul>
/a/的HTML输出。
  • /a/1的html输出/
  • /a/2的html输出/
  • /a/3的html输出/
因此,猜测一下/a/的视图将运行一个函数,该函数获取/a/1/、/a/2/等的html

显然,我的路由器将包含两个单独的控制器函数/a/和/a/[:number],而我的控制器函数/a/[:number]将返回一个带有setTerminal(true)的ViewModel

加载页面后,我可以用ajax调用这些URL中的每一个,我这样做的原因是我希望以后用ajax单独更新这些html片段,但是在第一次调用时,在调用/a/时呈现html的这些部分应该更快

在我看来,我需要一个返回/a/[:number]/的HTML的函数,所以我的问题是,我该怎么做?我可以使用什么功能

谢谢

您将编写一个视图帮助程序(扩展Zend\view\helper\AbstractHelper)。视图辅助对象需要以下信息:

  • 渲染的路径
  • 允许渲染的参数(即1-10)
在视图中,您可以调用视图帮助器,如:

$this->linkGenerator('a', array(1, 10)); //render all from /a/1 to /a/10
视图辅助对象的外观如下所示:

namespace Mynamespace\View\Helper;

use Zend\View\Helper\AbstractHelper;

class LinkGenerator extends AbstractHelper
{
    public function __invoke($routeName, array $range)
    {
        return $this->getView()->render('mynamespace/view/helper/linkgenerator.phtml', array(
            'route' => $routeName,
            'range' => $range
        ));
    }
}
<ul>
    <?php foreach($this->range as $value) : ?>
    <li>
         <a href="<?php echo $this->url($this->route, array('id', $value));?>">
             ####RouteLabel!?
         </a>
    </li>
    <?php endforeach; ?>
</ul>
    public function getViewHelperConfig()
    {
        return array(
            'factories' => array(
                'linkGenerator' => function ($sm) {
                    $someDependency= $sm->getServiceLocator()->get('some-dependency');

                    return new \Mynamespace\View\Helper\LinkGenerator($someDependency); //<- this is for __construct() ;)
                }
            )
        );
    }
最后,您的
linkgenerator.phtml
如下所示:

namespace Mynamespace\View\Helper;

use Zend\View\Helper\AbstractHelper;

class LinkGenerator extends AbstractHelper
{
    public function __invoke($routeName, array $range)
    {
        return $this->getView()->render('mynamespace/view/helper/linkgenerator.phtml', array(
            'route' => $routeName,
            'range' => $range
        ));
    }
}
<ul>
    <?php foreach($this->range as $value) : ?>
    <li>
         <a href="<?php echo $this->url($this->route, array('id', $value));?>">
             ####RouteLabel!?
         </a>
    </li>
    <?php endforeach; ?>
</ul>
    public function getViewHelperConfig()
    {
        return array(
            'factories' => array(
                'linkGenerator' => function ($sm) {
                    $someDependency= $sm->getServiceLocator()->get('some-dependency');

                    return new \Mynamespace\View\Helper\LinkGenerator($someDependency); //<- this is for __construct() ;)
                }
            )
        );
    }

希望这能回答你的问题。我想其他一切都可以归结为javascript。

我对zf2很陌生,您能为我澄清一下“某些依赖性”指的是什么吗?我有:
'invokables'=>数组('some-dependency'=>'MyModule\Helper\LinkGenerator',),
但我得到一个错误
ServiceManager::get无法获取或创建某个依赖项的实例
'some-dependency'
在这种情况下,可能是使LinkGenerator工作所需的另一个依赖项。它不是链接生成器。它可以是某种类型的
tableGateway
Repository
。因为你需要知道有多少链接要发布,这不是魔术能做到的,所以我的假设是你需要某种依赖注入;)实际上,我最终使用了模块配置的invokables部分,因为我不需要特殊的构造函数。不过,感谢您提供的信息,它确实帮助我爬上了陡峭的学习曲线。尽管如此,我无法获得视图的链接。。我得到“Zend\View\Renderer\PhpRenderer::render:无法呈现模板”。请告诉我应该把phtml文件放在哪里以及如何正确链接到它?谢谢@你需要正确地映射模板。视图管理器密钥中配置的模板映射密钥。