MVC 애플리케이션에 Zend Framework를 사용하고 있습니다.Zend Framework : 뷰 baseUrl()은 빈 문자열을 반환하고 컨트롤의 getRequest() -> getBaseUrl()은 정상적으로 작동합니다.
뷰에서 기본 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
으로 변경했으며이보기 변수를 사용자 지정 기본 컨트롤러 클래스에 정의했습니다. 그러나 이것은 내가 예상하는 해결책이 아닙니다.
이 모듈 응용 프로그램입니다, 내가 경로를 사용하고는, 다음과 같이 부트 스트랩 시간에 추가 :
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
var 솔루션을 사용하기 전에도).
누군가가이 사실을 알고 있다면 도와주세요. 내 응용 프로그램 설정에 대한 추가 정보가 필요하면 가능한 한 많이 제공하겠습니다.
편집은
사실, 문제가 될 것 같습니다 : 빈 문자열 baseUrl
, JS 및 뷰에서 CSS 스크립트를 포함하여 잘 작동; 하지만 Ajax를 사용해야 할 때가 있습니다. 기본 URL은 /index.dev.php
부분이 있어야 응용 프로그램 환경을 유지할 수 있습니다. 이 마지막 부분이 같은 질문이나 새로운 질문에 있어야하는지 나는 모른다.
'Zend_View_Helper_BaseUrl'은 실제로 스크립트 이름을 제거한다는 점을 제외하면'Zend_Controller_Request_Http-> getBaseUrl()'에 대한 프록시입니다. –