2010-04-27 3 views
2

Je l'ai mis dans le fichier bootstrap var vue comme celui-ci:Zend Framework: afficher var dans bootstrap non accessible dans les scripts de vue?

protected function _initVars() 
{ 
    $this->bootstrap('layout'); 
    $layout = $this->getResource('layout'); 
    $view = $layout->getView(); 
    $view->theme = 'MY_THEME'; 
} 

Mon application.ini a ligne suivante ainsi:

resources.view[] = 

Mais à l'intérieur des scripts de vue,

<?php echo $this->theme ?> 

n'imprime rien.

Suggestion?

Modifier

je pouvais utiliser toutes les fonctions, mais il est des variables de vue qui ne sont pas se résonnaient, pour une raison quelconque.

Répondre

0

Boostraping la vue via une méthode init fonctionne pour moi

protected function _initView() 
{ 
    $view = new Zend_View; 
    $view->setEncoding('UTF-8'); 
    $view->doctype('XHTML1_TRANSITIONAL'); 

    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 

    $view->SOME_VAR = 'SOME_VALUE'; 

    return $view; 
} 
+0

@Goran Jurić: Votre solution ne fonctionne pas dans mon cas. Aussi, ce serait bien si je pouvais connaître le problème réel dans mon cas. – understack

0

Cette mine est et fonctionne très bien pour moi ............. je l'espère aider

protected function _initLayoutView() { 
      $this -> bootstrap ('layout'); 
      $layout = $this -> getResource ('layout'); 
      $view = $layout -> getView(); 
      $view->addHelperPath('dagho/View/Helper', 'dagho_View_Helper'); 
      $view -> doctype('XHTML1_STRICT'); 
      $view->headMeta()->appendHttpEquiv('Content-Type', 
        'text/html; charset=utf-8') 
        ->appendHttpEquiv('Content-Language', 'en-US');; 
      $view->headLink(array('rel' => 'favicon', 
        'href' => $view->baseUrl().'/img/favicon.ico'), 
        'PREPEND'); 
      $view -> headLink() -> prependStylesheet($view->baseUrl('/css/demo.css')) 
        ->prependStylesheet($view->baseUrl('/css/text.css')) 
        ->prependStylesheet($view->baseUrl('/css/960.css')) 
        ->prependStylesheet($view->baseUrl('/css/reset.css')); 

      $view->headScript()->appendFile($view->baseUrl('js/jquery-1.4.2.min.js') , "text/javascript") 
        ->appendFile($view->baseUrl('js/jquery-ui.min.js') , "text/javascript") 
        ->appendFile($view->baseUrl('js/swfobject/swfobject.js') , "text/javascript"); 
      $view -> headTitle('title '); 
      $view -> headTitle() -> setSeparator(' : '); 
      $trackerId = 'UA-xxxxxxxx-4'; 
      $googleAnalytics = $view->GoogleAnalytics($trackerId); 
      return $view ; 
     } 

et dans la vue par exemple je fais quelque chose comme: <?php echo $this->GoogleAnalytics(); ?> quelque façon que vous pouvez ajouter le dernier point-virgule dans le <?php echo $this->theme ?> à être comme je sais <?php echo $this->theme; ?> semble fou, mais je préfère rester avec des règles

+0

@tawfekov: J'utilise aussi la plupart des fonctions que vous avez mentionnées plus haut sans aucun problème. Seules les variables de vue ne sont pas imprimées dans les scripts de vue. – understack

+0

@understack donc ce problème est vraiment câblé, si vous avez besoin d'une solution rapide utiliser le registre zend mais je n'aime pas utiliser à moins que j'ai besoin de btw quelle est votre version ZF? – tawfekov

1

Vous avez oublié de renvoyer votre objet de vue. return $ view;

+0

accepté, return $ view depuis _initVars() – jah

Questions connexes