我正在使用Zend Framework进行MVC应用程序。
当我在视图中需要基本Url时,它总是返回""
(空字符串);在我的控制器中,如果我使用$this->getRequest()->getBaseUrl()
,它将返回正确的基本URL。
在示例中,我通过index.dev.php
使用开发应用程序环境(生产是index.php
);在制作中,我希望我的所有网址都以""
作为baseUrl开头,但在开发环境中,使用index.dev.php,我希望我的所有网址都以"/index.dev.php"
开头。
正如我之前所说,即使在开发环境中,视图的baseUrl()
助手也会返回一个空字符串。但是在同一环境中使用$this->getRequest()->getBaseUrl()
,会返回正确的基本URL。
为了解决这个问题,我将所有视图的$this->baseUrl()
调用更改为$this->baseUrl
,并在自定义基本控制器类中定义了此视图变量。但这不是我期望的解决方案。
这是一个模块化应用程序,我正在使用路由,在Bootstrap时间添加如下:
protected function _initRoutes(){
$objFrontController = Zend_Controller_Front::getInstance();
$objRouter = $objFrontController->getRouter();
$arrAppRoutes = Service_Route::getAllActiveApplicationRoutes();
if( is_array($arrAppRoutes) && count($arrAppRoutes) > 0 ){
$objRouter->addRoutes($arrAppRoutes);
// Add the default routes in the end
$objRouter->addDefaultRoutes();
}
}
这些路由都是Zend_Controller_Router_Route
类的实例,当我在视图中使用它们时$this->url(array(), 'admin_dashboard');
,baseUrl
总是正确的(甚至在使用{{1}之前查看var解决方案)。
如果有人知道这件事,请帮忙。如果您需要有关我的应用程序设置的更多信息,我会尽可能多地提供它。
修改
实际上,似乎存在一个问题:空字符串baseUrl
在视图中工作正常,包括JS和CSS脚本;但有时候我需要使用Ajax,并且Base URL应该有baseUrl
部分,以保持应用程序环境。我不知道这最后一部分应该是在同一个问题中,还是在一个新问题中。
答案 0 :(得分:0)
由于视图中的baseUrl会删除脚本名称,因此附加$_SERVER['SCRIPT_NAME']
应修复它。