你會寫一個視圖助手(Zend的擴展\查看\助手\ 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。
來源
2012-12-18 07:21:17
Sam
我對zf2相當陌生,你能澄清一下'某些依賴'是指什麼嗎?我有: ' 'invokables'=>陣列( '一些依賴性'=> 'MyModule的\輔助\ LinkGenerator', ),' 但我得到一個錯誤'的ServiceManager ::得到無法獲取或爲某個依賴項創建一個實例。 – Shoreline
在這種情況下''some-dependency''可能是您需要使LinkGenerator工作的另一個依賴項。它不是LinkGenerator。它可能是某種形式的'tableGateway'或'Repository'。因爲你需要知道有多少鏈接需要輸出,不能用魔術來完成,所以我的假設是你需要某種依賴注入;) – Sam
我實際上使用了模塊config中的invokables部分最終因爲我不需要特殊的構造函數。感謝您提供的信息,它確實幫助我爬上了陡峭的學習曲線。 – Shoreline