我正在将 Zend Framework 用于 MVC 应用程序。
当我需要视图中的基本 URL 时,它总是返回""
(空字符串);在我的控制器中,如果我使用$this->getRequest()->getBaseUrl()
,它会返回正确的基本 URL。
例如,我通过index.dev.php
(生产是index.php
)使用开发应用环境;在生产""
环境中,我希望我所有的 URL 都以 baseUrl 开头,但在开发环境中,使用 index.dev.php,我希望我所有的 URL 都以"/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
总是正确的(甚至在使用baseUrl
view var 解决方案之前)。
如果有人知道这件事,请帮忙。如果您需要有关我的应用程序设置的更多信息,我会尽可能多地提供。
编辑
实际上,似乎有一个问题:空字符串baseUrl
,在视图中可以正常工作,包括 JS 和 CSS 脚本;但有时我需要使用 Ajax,而 Base URL 应该有/index.dev.php
一部分,以保持应用程序环境。我不知道最后一部分是否应该在同一个问题中,还是在一个新问题中。