ビュー ヘルパーを作成します (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
));
}
}
最後に、次の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>
これで、ルート ラベルはよりトリッキーなものの 1 つになります。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に要約されると思います。