当前位置:  开发笔记 > 编程语言 > 正文

Zend Framework $ this-> baseUrl()总是返回当前页面:(为什么

如何解决《ZendFramework$this->baseUrl()总是返回当前页面:(为什么》经验,为你挑选了2个好方法。

看看这个网站www.fltdata.com.出于某种原因,无论您进入哪个页面而不是指向主页,主页链接都指向当前页面.它在我的localhost上工作正常但在线它的行为就像这样.主链接的href值只是:$ this-> baseUrl()

这里有什么不对..

===编辑===

好吧,我创建了一个帮助器,如下所示:

class Zend_View_Helper_BaseUrl
{
    protected $_baseUrl;

    function __construct()
    {
        $fc = Zend_Controller_Front::getInstance();
        $this->_baseUrl =  $fc->getBaseUrl();
    }

    function baseUrl()
    {
        return $this->_baseUrl;
    }
}

这是我想每当我调用$ this-> baseUrl时都会被调用.这可能是问题 - 但它在我的本地主机上工作正常,而不是在线 - 所以必须是某种配置问题 - 我应该在哪里看?



1> Stefan Gehri..:

如果不了解有关ZF设置和网址重写设置的更多详细信息,很难说出这里出了什么问题.背后的逻辑Zend_Controller_Request_Http::getBaseUrl()- Zend_View_Helper_BaseUrl::baseUrl()如果baseUrl在前端控制器中没有明确设置,那么你的调用就会被调用- 非常复杂并涉及4个不同的服务器变量(还有一些在确定当前请求URI的过程中).

解决此问题最简单的方法可能是baseUrl在引导程序中设置前端控制器上的(相对于服务器根目录).如果您正在使用新的Zend_Application-bootstrapping,则只需添加即可

resources.frontController.baseUrl = "/subdir"

到你的配置.

编辑

您的帮助程序或多或少类似于baseUrlZF附带的原始-helper.原来的也代理Zend_Controller_Front::getBaseUrl().你使用哪个版本的ZF?有没有理由不使用发货的baseUrl-helper?

您是否尝试过baseUrl明确设置引导?



2> 小智..:

我通常使用配置对象作为基本URL,然后在public/index.php的index.php中定义它

    $config = new Zend_Config_Ini(
        APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
    $baseUrl = $config->baseHttp;
    define('BASE_URL', $baseUrl);`

在configs/application.ini中我有生产部分

[production]
baseHttp                            = "http://whatever.net"

这样,如果我需要在开发中使用不同的基本URL,我可以为baseHttp个人添加一个不同的变量,我想如果你想让baseurl不要复杂,那么它比在自己的类中包装更简单.有时OOP太多OOP.此外,它还可以使安装程序更易于管理.你甚至可以获得$ _SERVER变量来获取主机名并用http://包装它

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有