您将编写一个视图助手(扩展 Zend\View\Helper\AbstractHelper)。视图助手需要以下信息:
在您的视图中,您会调用视图助手,例如:
$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
));
}
}
最后你linkgenerator.phtml
看起来像这样:
<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>
现在路线标签将是更棘手的事情之一。由于 ID 将具有不同的标签(假设),您可能需要从 viewhelper 调用导航配置或数据库并相应地获取标签。
tableGateway/Mapper/EntityRepository 的注入将在__construct()
函数内完成。
您将通过注册视图助手时分配的工厂注入所需的东西,如下所示:
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。