我是ZF3的noobie,我们已经将基于zend的管理面板放置在基于代码点火器的主应用程序中。像跟随的方式
my_app/zend_admin/
|
|
--- config
--- module
--- public我可以使用www.my_app.com/zend_admin/my_zend_controller/my_zend_action访问zend模块。
我想访问www.my_app.com/my_ci_controller/my_ci_action。
是否有zend ci提供base_url()的方法,以便我可以获取ci控制器??
发布于 2017-06-16 19:59:45
有几种方法,您可以完成这项工作使用ZF微型工具。
ZF中有一些类似于CodeIgniter的视图帮助程序。您可以在视图脚本和布局模板中使用它们。
让我们开始使用模块的module.config.php。您可以在base_path密钥下设置view_manager密钥,如下所示
'view_manager' => [
'base_path' => 'http://www.yoursite.com/',
]现在,如果您使用以下视图助手
echo $this->basePath();
// Outputs http://www.yoursite.com/如果您使用下面的
echo $this->basePath('css/style.css');
// Outputs http://www.yoursite.com/css/style.css但是如果您不使用上面的配置
echo $this->basePath('css/style.css');
// Outputs css/style.css正如@tasmaniski所说的关于$this->serverUrl();,您也可以在视图脚本中使用它。这样做的好处是不需要像$this->basePath()这样的配置。
,如果在ZF的控制器动作中需要这个,该怎么办?在控制器操作中,最简单的方法是
public function indexAction()
{
$uri = $this->getRequest()->getUri();
$baseUrl = sprintf('%s://%s/', $uri->getScheme(), $uri->getHost());
// Use this $baseUrl for your needs
// Outputs http://www.yoursite.com/
}否则,您可以通过以下方式获得它,但这与$this->basePath()的工作方式相同
public function indexAction()
{
// This is for zf2
$renderer = $this->getServiceLocator->get('Zend\View\Renderer\RendererInterface');
// This is for zf3
// Assuming $this->serviceManager is an instance of ServiceManager
$renderer = $this->serviceManager->get('Zend\View\Renderer\RendererInterface');
$baseUrl = $renderer->basePath('/uri');
// Use this $baseUrl for your needs
// Outputs http://www.yoursite.com/uri
}此外,在控制器动作中还可以在不同的条件下使用另外两个函数。如果使用重写规则,则返回空字符串。这些是
$this->getRequest()->getBaseUrl();
$this->getRequest()->getBasePath();这些不像你期望的那样有效,我指的是你所期望的。必须参考问题才知道这是为什么!
https://stackoverflow.com/questions/44586790
复制相似问题