Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-08-2008 12:44:02

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

[Zend_View] [1.5] Définir le chemin d'un script de vue précis

Bonjour,

Pour mon site j'utilise principalement des modules. Mon arborescence est la suivante :

http://www.kaimite.com/img_forums/arbo_zf-cms.gif

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 :

Code:

$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 :

Code:

function listeAction () {
    $this -> _helper -> viewRenderer('index/form', 'html', true);
    return;
}

Je n'ai pas de message d'erreur mais pas de vue non plus sad

Le truc étonnant c'est que si je tente par exemple :

Code:

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 wink

Merci pour votre aide.

Cordialement,
Kaimite

Hors ligne

 

#2 23-08-2008 14:34:00

pozowebs
Membre
Lieu: Gran Canaria
Date d'inscription: 06-07-2008
Messages: 83
Site web

Re: [Zend_View] [1.5] Définir le chemin d'un script de vue précis

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)

Code:

$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

 

#3 24-08-2008 11:19:55

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

Re: [Zend_View] [1.5] Définir le chemin d'un script de vue précis

Merci pour la réponse.
Je vais jetter un p'tit coup d'oeil à tout ça smile

Cordialement,
Kaimite

Hors ligne

 

#4 29-08-2008 11:43:32

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

Re: [Zend_View] [1.5] Définir le chemin d'un script de vue précis

Salut,

Après avoir bien galéré j'ai finalement trouvé une solution simple smile

Code:

<?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 smile

Merci pour ton aide qui m'a mis sur la voie !

Cordialement,
Kaimite

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages