Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-02-2012 11:53:39

schwarzy2
Nouveau membre
Lieu: proche de Paris
Date d'inscription: 05-01-2012
Messages: 8
Site web

[ZF 1.11] modifier le fichier de vue

Bonjour à tous,

J'utilise dans mon projet un module par défaut, et une module "precos".
Le contrôleur PrecosController de mon module Precos hérite du contrôleur ItemController de mon module default.

J'ai ajouté ces deux lignes de code dans mon contrôleur:
$this->_helper->viewRenderer->setNoController();
$this->_helper->viewRenderer->setScriptAction('item/search');

Ce qui fait qu'aujourd'hui, la vue associée à l'action "search" de mon contrôleur PrecosController se trouve dans
=>application/modules/precos/views/scripts/item/search.phtml.

Je voudrais qu'automatiquement la redirection se fasse sur le fichier search du module default:
=>application/modules/default/views/scripts/item/search.phtml.

Pour cela j'ai ajouté cette ligne de code:
$this->_helper->viewRenderer->setViewBasePathSpec(PATH_ROOT.'application'.DS.'modules'.DS.'default'.DS.'views');
       

Mais j'obtiens alors ce message d'erreur:

Exception information:

Message: script 'item/search.phtml' not found in path (C:/Program Files/Zend/Apache2/htdocs/precos/application/modules/precos/views\scripts/)

Comme s'il ignorait ma modification de ViewBasePath. Alors qu'un :
echo $this->_helper->viewRenderer->getViewBasePathSpec();
m'affiche:
C:\Program Files\Zend\Apache2\htdocs\precos\application\modules\default\views

Je ne comprends donc pas ce qui coince. Si quelqu'un avait une idée?

merci d'avance pour votre aide


Feel good, feel geek

Hors ligne

 

#2 28-02-2012 18:01:54

schwarzy2
Nouveau membre
Lieu: proche de Paris
Date d'inscription: 05-01-2012
Messages: 8
Site web

Re: [ZF 1.11] modifier le fichier de vue

alors en fait j'ai fini par effectuer ma modification dans un plugin, ainsi mon setViewBasePathSpec est pris en compte! mon code est:

Code:

class AppliPlugin extends Zend_Controller_Plugin_Abstract{
 
    public function dispatchLoopStartup($request){
 
        //je redirige sur le module par défaut si le fichier spécifique n'existe aps 
        //et s'il ne s'agit aps du controller  index
        $vr = Zend_Controller_Action_HelperBroker::getExistingHelper('viewRenderer');
 
        $suffix=$vr->getViewSuffix();
        $ctl=$request->getControllerName();
        $action=$request->getActionName();
 
        if(($ctl!='index')&&($ctl!='auth')){
            $file_spec=$vr->getModuleDirectory().DS.'views'.DS.'scripts'.DS.$ctl.DS.$action.'.'.$suffix;
            //echo $file_spec;
            if(!file_exists($file_spec)){
                $chemin_vues=PATH_ROOT.'application'.DS.'modules'.DS.'default'.DS.'views';
                $vr->setViewBasePathSpec($chemin_vues)
               ->setViewScriptPathSpec('item'.DS.':action.:suffix');// par défaut : :controller/:action.:suffix
 
 
            }
        }
 
    }
}

mais du coup mes aides de vue ne s'affichent pas car la classe attendue est précédée du préfixe "nom_du_module" alors que je suis dans le répertoire default.
Le message d'erreur est:

Code:

<b>Warning</b>:  Exception caught by form: Plugin by name 'AffItem' was not found in the registry; used paths:
Maq_View_Helper_: C:/Program Files/Zend/Apache2/htdocs/zf_pvi_ria/application/modules/default/views\helpers/
Zend_View_Helper_: Zend/View/Helper/
Stack Trace:
#0 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\View\Abstract.php(1182): Zend_Loader_PluginLoader->load('AffItem')
#1 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\View\Abstract.php(618): Zend_View_Abstract->_getPlugin('helper', 'AffItem')
#2 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\View\Abstract.php(344): Zend_View_Abstract->getHelper('AffItem')
#3 C:\Program Files\Zend\Apache2\htdocs\zf_pvi_ria\application\modules\default\views\scripts\item\form.phtml(12): Zend_View_Abstract->__call('AffItem', Array)
#4 C:\Program Files\Zend\Apache2\htdocs\zf_pvi_ria\application\modules\default\views\scripts\item\form.phtml(12): Zend_View->AffItem(Object(Zend_Form_Element_Hidden))

J'ai vu que le problème venait en fait du _prefixToPaths du Zend_Loader_PluginLoader mais je ne réussis pas à trouver comment modifier sa valeur...si quelqu'un pouvait m'aider.

merci d'avance


Feel good, feel geek

Hors ligne

 

#3 29-02-2012 00:12:50

Polzie
Membre
Date d'inscription: 12-03-2010
Messages: 20

Re: [ZF 1.11] modifier le fichier de vue

En cherchant un peu j'ai trouvé ça :

Code:

$this->view->setScriptPath(PATH_ROOT.'application'.DS.'modules'.DS.'default'.DS.'views'.DS.'scripts'.DS);

Je pense que ça peut t'aider si j'ai bien saisi ton problème.

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