Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Pour mon site j'utilise principalement des modules. Mon arborescence est la suivante :
Pour mon admin j'ai des vues qui sont communes à tous les modules : Listing des enregistrements, affichage du formulaire de saisie, Corbeille (avec la puce rouge) . J'ai donc ajouté dans mon bootstrap la ligne suivante :
$view -> addScriptPath(MODULES_DIR . "/default/admin/views/scripts");
Ainsi les fichiers de vue "form.phtml" et "liste.phtml" ne sont définie que dans le dossier "/app/modules/default/admin/views/scripts/index"
Pour l'instant ça marche très bien.
Là où ça ce gate c'est si je créé un autre controller dans mon module.
J'ai un module article (qui gere des articles) et dans ce module j'ai un 2nd controller "Encadre".
Quand je vais sur l'admin des encadrés :
http://www.monsite.com/admin/article/encadre/liste
J'obtiens une erreur m'indiquant que le fichier de vue "encadre/liste.phtml" est introuvable. Et je ne vois pas comment lui indiquer d'aller chercher dans "/app/modules/default/admin/views/scripts/index"
En cherchant sur la doc j'ai testé ça :
function listeAction () { $this -> _helper -> viewRenderer('index/form', 'html', true); return; }
Je n'ai pas de message d'erreur mais pas de vue non plus
Le truc étonnant c'est que si je tente par exemple :
function listeAction () { $this -> _helper -> viewRenderer('index/formulaire', 'html', true); return; }
J'obtients bien un message d'erreur :
script 'index/formulaire.phtml' not found in path (/Users/pilou/Sites/zf-cms/app/modules/article/admin/views/scripts/:/Users/pilou/Sites/zf-cms/app/modules/default/admin/views/scripts/)
Si quelqu'un a une idée je suis preneur
Merci pour votre aide.
Cordialement,
Kaimite
Hors ligne
Salut!
Par default, le viewRenderer cherche la vue dans le module du controller qui l'appelle.
Un truc a essayer serait d'instancier un nouveau viewRenderer (avec les options qui vont bien),
(8.8.4.7.2. API)
$view = new Zend_View(array('encoding' => 'UTF-8')); $options = array('noController' => true, 'neverRender' => true); $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view, $options);
et ensuite utiliser l'une des méthodes qui permettent de controller le chemin par exemple setViewScriptPathSpec, avant d'appeler ta vue.
bon courage.
Dernière modification par pozowebs (23-08-2008 14:34:38)
Hors ligne
Salut,
Après avoir bien galéré j'ai finalement trouvé une solution simple
<?php class Article_EncadreController extends Zend_Controller_Action { /** * Redirector - défini pour l'auto-complétion * @var Zend_Controller_Action_Helper_Redirector */ protected $_redirector = null; function init() { $this -> _helper -> viewRenderer -> setViewScriptPathSpec("index/:action.:suffix"); }
Une petite ligne dans le init() et ça fonctionne
Merci pour ton aide qui m'a mis sur la voie !
Cordialement,
Kaimite
Hors ligne
Pages: 1