2013-03-27 4 views
0

변수는보기에 표시하지 않고 뷰 헬퍼가 작동하지 않습니다 : 예를 들어 내가 컨트롤러 변수를 정의 :응용 프로그램이 이런 식으로 작동하는 이유는 무엇입니까? 컨트롤러에서

$this->view->title = "Title"; 

을하고보기에서 인쇄 :

echo $this->title; 

변수 "titles"의 내용은 페이지에 나타나지 않습니다. 대신 나는 모든 exept 네비게이션을 작동

use ZFBootstrap\View\Helper\Navigation\Menu; 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
protected function _initAutoload() { 
    require_once '../application/plugins/AuthPlugin.php'; 
    require_once '../application/configs/configAcl.php'; 
    $frontController = Zend_Controller_Front::getInstance(); 
    $frontController->registerPlugin($auth = new AuthPlugin()); 
    $frontController->getRouter()->addDefaultRoutes(); 
    $autoloader = Zend_Loader_Autoloader::getInstance(); 
    $autoloader->setFallbackAutoloader(true); 

    /*$this->bootstrap('layout'); 
    $layout=$this->getResource('layout'); 
    $view=$layout->getView();*/ 
    $config = new Zend_Config_Xml(APPLICATION_PATH. '/configs/navigation.xml', 'nav'); 
    $container = new Zend_Navigation($config); 
    /*$view = Zend_Layout::startMvc()->getView(); 
    $view->registerHelper(new Menu(), 'menu'); 
    $view->navigation($container);//->setAcl($acl)->setRole($auth->getStorage()->read()->role);  
    */Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl); 
    $auth = Zend_Auth::getInstance(); 
    $identity = $auth->getIdentity(); 
    $role = ($auth->hasIdentity() && !empty($auth->getIdentity()->role)) 
      ? $auth->getIdentity()->role : 'guest'; 
    Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($role); 
    /*$view->navigation()->menu()->render(); 
    $view->navigation()->menu()->setMinDepth(1)->setUlClass('nav');*/ 
} 

이 코드를 사용하는 경우

use ZFBootstrap\View\Helper\Navigation\Menu; 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
protected function _initAutoload() { 
    require_once '../application/views/helpers/LoggedInAs.php';//need to include a view-helper 
    require_once '../application/plugins/AuthPlugin.php'; 
    require_once '../application/configs/configAcl.php'; 
    $frontController = Zend_Controller_Front::getInstance(); 
    $frontController->registerPlugin($auth = new AuthPlugin()); 
    $frontController->getRouter()->addDefaultRoutes(); 
    $autoloader = Zend_Loader_Autoloader::getInstance(); 
    $autoloader->setFallbackAutoloader(true); 

    $this->bootstrap('layout'); 
    $layout=$this->getResource('layout'); 
    $view=$layout->getView(); 
    $config = new Zend_Config_Xml(APPLICATION_PATH. '/configs/navigation.xml', 'nav'); 
    $container = new Zend_Navigation($config); 
    $view->registerHelper(new Menu(), 'menu'); 
    $view->navigation($container); 
    Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl); 
    $auth = Zend_Auth::getInstance(); 
    $identity = $auth->getIdentity(); 
    $role = ($auth->hasIdentity() && !empty($auth->getIdentity()->role)) 
      ? $auth->getIdentity()->role : 'guest'; 
    Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($role); 
    $view->navigation()->menu()->render(); 
    $view->navigation()->menu()->setMinDepth(1)->setUlClass('nav'); 
} 

:

여기 내 부트 스트랩 파일입니다. 문제는 내 탐색 기능이 작동하지 않으며 어떻게 해결할 수 있는가입니다.

답변

1

먼저 Bootstrap.php은 완전히 엉망입니다. 기본적인 조직으로 시작하십시오. 당신이 당신의 부트 스트랩의 뷰 객체를 조작 할 때

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
    /** 
    * initialize the session 
    */ 
    protected function _initsession() 
    { 
     Zend_Session::start(); 
    } 

    /** 
    * initialize the registry and assign application.ini to config namespace of Zend_Registry 
    */ 
    protected function _initRegistry() 
    { 
     $config = new Zend_Config($this->getOptions()); 
     Zend_Registry::set('config', $config); 
    } 

은 새 뷰를 반환 할 수 있는지 확인해야합니다 탐색에 관한

/** 
    * initialize the view and return it 
    * @return \Zend_View 
    */ 
    protected function _initView() 
    { 
     //Initialize view 
     $view = new Zend_View(); 
     //add custom view helper path 
     $view->addHelperPath('/../library/My/View/Helper'); 
     //set doctype for default layout 
     $view->doctype(Zend_Registry::get('config')->resources->view->doctype); 
     //set head meta data 
     $view->headMeta()->setCharset(Zend_Registry::get('config')->resources->view->charset); 
     //set css includes 
     $view->headlink()->setStylesheet('/bootstrap/css/bootstrap.min.css'); 
     $view->headLink()->appendStylesheet('/css/main.css'); 
     //add javascript files 
     $view->headScript()->setFile('/bootstrap/js/jquery.min.js'); 
     $view->headScript()->appendFile('/bootstrap/js/bootstrap.min.js'); 
     //add the view to the view renderer 
     $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
       'ViewRenderer'); 
     $viewRenderer->setView($view); 
     //Return it, so that it can be stored by the bootstrap 
     return $view; 
    } 

지금까지있다.

<div id="nav"> 
    <?php echo $this->navigation()->menu() 
       ->renderMenu(null, array(
        'minDepth' => null, 
        'maxDepth' => 1, 
        'onlyActiveBranch' => TRUE 
       )) ?> 
</div> 

하나 :

그런 다음 레이아웃 파일에 다음과 유사한 탐색을 구현할 수있다 : 당신은 부트 스트랩에서 탐색 컨테이너를 초기화 할 수 있지만 실제 뷰 컴포넌트는 일반적으로 레이아웃 설정을 내기 것 염두에 두어야 할 점 : 메서드의 $this->getOptions()을 호출 할 때 얻을 수있는 옵션은 application.ini 파일에서 왔습니다. 많은 옵션이 여기에서 종종 초기화됩니다.

//application.ini as example your settings will be somewhat different 
[production] 
;------------------------------------------------------------------------------- 
;PHP 
;------------------------------------------------------------------------------- 

phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 

;------------------------------------------------------------------------------- 
;Paths and Namespaces 
;------------------------------------------------------------------------------- 

includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
autoloaderNamespaces[] = "My_" 

;------------------------------------------------------------------------------- 
;Front Controller 
;------------------------------------------------------------------------------- 

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.params.displayExceptions = 0 
resources.frontController.moduleControllerDirectoryName = "controllers" 
resources.frontController.params.prefixDefaultModule = "" 
resources.modules = "" 
resources.frontController.baseurl = http://example.com 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 

;------------------------------------------------------------------------------- 
;plugins 
;------------------------------------------------------------------------------- 

pluginPaths.My_Application_Resource = APPLICATION_PATH "/../library/My/Resource" 
resources.frontController.actionhelperpaths.My_Controller_Action_Helper = APPLICATION_PATH "/../library/My/Controller/Action/Helper" 

;------------------------------------------------------------------------------- 
;View Settings 
;------------------------------------------------------------------------------- 

resources.view[]= 
resources.view.charset = "UTF-8" 
resources.view.encoding = "UTF-8" 
resources.view.doctype = "HTML5" 
resources.view.language = "en" 

;------------------------------------------------------------------------------- 
;Database Settings 
;------------------------------------------------------------------------------- 

resources.db.adapter = "pdo_Mysql" 
resources.db.params.username = "user" 
resources.db.params.password = "xxxxxxx" 
resources.db.params.dbname = "dbname" 
resources.db.params.charset = "utf8" 
resources.db.isDefaultTableAdapter = true 
resources.db.params.profiler = true 

;------------------------------------------------------------------------------- 
;Layouts 
;------------------------------------------------------------------------------- 

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 


[staging : production] 


[testing : production] 

phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 

[development : production] 

phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

페이지가 비어 있고 그렇지 않아야한다고 생각되면 환경을 '개발'로 설정하거나 '생산'섹션에서 오류 표시 값을 '0'에서 '1'로 변경하십시오. 이렇게하면 오류가 표시됩니다.

행운을 빌어 요

+0

오, 정말 고마워, 정말 도움이 됐어! – user1956641