2013-02-06 2 views
0

한 레이아웃 :젠드 프레임 워크 - 여러 개의 모듈, 나는 다음과 같은 구조의 젠드 응용 프로그램이

application 
    configs 
     application.ini 
    modules 
     api 
      controllers 
      Bootstrap.php 
     default 
      controllers 
       IndexController.php 
      models 
      views 
       scripts 
        index 
         index.phtml 
       layouts 
        layout.phtml 
      Bootstrap.php 

내 응용 프로그램/CONFIGS/application.ini는 다음과 같습니다

phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.params.displayExceptions = 0 
resources.db.adapter = "PDO_SQLITE" 
resources.db.params.dbname = APPLICATION_PATH "/../data/db/test.sqlite3" 

resources.modules = "" 

resources.frontController.params.prefixDefaultModule = "1" 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.layout.layoutPath = APPLICATION_PATH "/modules/default/views/layout/" 

내 문제를 내가 뭘하든 레이아웃을 사용할 수 없다는 걸 http://test.app/index/index으로 가면 뷰 스크립트의 출력은 볼 수 있지만 레이아웃은 볼 수 없습니다.

+0

정말 레이아웃 없이는 오류가 발생한다고 생각했을 것입니다. 레이아웃 경로를 무언가로 변경하면 오류가 발생합니까? 메인 애플리케이션 부트 스트랩에 init 메소드가 있습니까? –

+0

@TimFountain 아니요, 레이아웃이 없으면 오류가 발생하지 않습니다. 게다가 위의 문제는 그가 레이아웃을 초기화하는 것을 잊었다 고 생각합니다 (부트 스트랩에 추가했거나 필요한 곳마다). 잘못된 경로가있을 때 오류가 발생하지만 오류 경로를 얻지 못하면 괜찮습니다. –

답변

2

레이아웃 경로는 지정했지만 사용하려는 실제 레이아웃 파일은 절대로 참조하십시오. 레이아웃이 layout.phtml이라고 가정하면이 값을 앱의 ini에 추가합니다.

resources.layout.layout = "layout" 

둘 이상의 레이아웃을 사용해야하는 경우 작업/컨트롤러 수준별로 재정의 할 수 있습니다. 컨트롤러에서는 그런 다음 당신은 다음과 같은 방법을 $this->_helper->layout()를 통해 레이아웃에 도달 할 수 있습니다 : setLayoutPath(), setLayout(), disableLayout()

참조 : 당신은 Bootstrap.php 또는 application.ini에서 레이아웃 파일을 초기화 할 필요가 http://framework.zend.com/manual/1.12/en/learning.layout.usage.html

+0

실제 레이아웃 파일을 지정하지 않으면 기본 layout.phtml을 사용하지 않습니까? – Zorrocaesar

+0

음 ... 시도해보고 보시겠습니까? 이 "default layout.phtml"은 어디에 있습니까? 당신이 그것을 만들 수 있습니까? 기본 이름은 무엇입니까? default.phtml? layout.phtml? 나는 기본값과 애매함을 좋아하지 않는다. 노골적으로 말하십시오. 내가 제안한 것을 시도 했니? – ficuscr

+0

답을 찾았습니다. http://framework.zend.com/manual/1.12/en/zend.layout.options.html 인용구 : "layout : 사용할 레이아웃. 현재의 굴절기를 사용하여 이름은 적절한 레이아웃 뷰 스크립트에 제공됩니다. 기본적으로이 값은 'layout'이며 'layout.phtml'으로 해결됩니다. 액세서는 setLayout() 및 getLayout()입니다. " – Zorrocaesar

0

그것을 사용하려면 어떤 파일을 사용할 지 선언하지 않았습니다. Bootstrap.php에서

function _initViewHelpers() 
{ 
    $this->bootstrap('layout'); 
    $layout = $this->getResource('layout'); 
    $view = $layout->getView(); 
} 

그리고 여러 레이아웃을 갖고 싶어하고 this answer here이 봐야 레이아웃을 사용하는 다른 조건이 있다면 당신이 갈 수 있어야한다 꽤 멋지다 .