我想将变量(可能是服务人员)传递给zend的内置帮助器。可能吗?为了更清楚:
嗯,事情看起来像这样:我试图制作自己的自定义路由。所以在数据库中我有控制器,动作和它的别名。例如:
Home\Controller\Home | index | myalias
路由工作正常,这意味着如果我输入url:
example.com/myalias
然后Zend将打开Home控制器和索引操作。但在整个页面上,我有由Zend内置Url助手制作的URL,如下所示:
$this->url('home', array('action' => 'index'));
所以链接看起来:
example.com/home/index
我想将链接更改为
example.com/myalias
不更改整页上Url助手生成的链接。所以在帮助者返回url之前,应检查该url是否有别名,如果是,那么应该返回该别名exept regular url。
答案 0 :(得分:0)
在你有helper类文件的模块的Module.php中,写下以下内容 -
//use statements
class Module {
//public function getAutoloaderConfig() { [...] }
//public function getConfig() { [...] }
public function getViewHelperConfig() {
return array(
'factories' => array(
'Url' => function ($sm) {
$locator = $sm->getServiceLocator();
$viewHelper = new View\Helper\Url;
//passing ServiceLocator to Url.php
$viewHelper->setServiceLocator($locator); //service locator is passed.
return $viewHelper;
},
),
);
}
}
现在在Url.php中,我们需要一个函数setServiceLocator()
和getServiceLocator()
。
//use statements
class Url {
public $serviceLocator;
public function getServiceLocator() {
return $this->serviceLocator;
}
public function setServiceLocator($serviceLocator) {
if($this->serviceLocator == null)
$this->serviceLocator = $serviceLocator;
return;
}
}
我希望它有所帮助。