首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在3中获取?

如何在3中获取?
EN

Stack Overflow用户
提问于 2017-06-16 10:17:35
回答 2查看 2.9K关注 0票数 1

我是ZF3的noobie,我们已经将基于zend的管理面板放置在基于代码点火器的主应用程序中。像跟随的方式

代码语言:javascript
运行
复制
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控制器??

EN

Stack Overflow用户

发布于 2017-06-16 19:59:45

有几种方法,您可以完成这项工作使用ZF微型工具。

ZF中有一些类似于CodeIgniter的视图帮助程序。您可以在视图脚本和布局模板中使用它们。

让我们开始使用模块的module.config.php。您可以在base_path密钥下设置view_manager密钥,如下所示

代码语言:javascript
运行
复制
'view_manager' => [
    'base_path' => 'http://www.yoursite.com/',
]

现在,如果您使用以下视图助手

代码语言:javascript
运行
复制
echo $this->basePath();
// Outputs http://www.yoursite.com/

如果您使用下面的

代码语言:javascript
运行
复制
echo $this->basePath('css/style.css');
// Outputs http://www.yoursite.com/css/style.css

但是如果您不使用上面的配置

代码语言:javascript
运行
复制
echo $this->basePath('css/style.css');
// Outputs css/style.css

正如@tasmaniski所说的关于$this->serverUrl();,您也可以在视图脚本中使用它。这样做的好处是不需要像$this->basePath()这样的配置。

,如果在ZF的控制器动作中需要这个,该怎么办?在控制器操作中,最简单的方法是

代码语言:javascript
运行
复制
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()的工作方式相同

代码语言:javascript
运行
复制
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   
}

此外,在控制器动作中还可以在不同的条件下使用另外两个函数。如果使用重写规则,则返回空字符串。这些是

代码语言:javascript
运行
复制
$this->getRequest()->getBaseUrl();
$this->getRequest()->getBasePath();

这些不像你期望的那样有效,我指的是你所期望的。必须参考问题才知道这是为什么!

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44586790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档