Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-08-2011 14:21:42

wafa
Nouveau membre
Date d'inscription: 25-08-2011
Messages: 1

exception 'Zend_Loader_PluginLoader_Exception'

Bonjour,
J'entre dans le vif du sujet.
Je débute avec Zend Framework et je suis ce tuto:
http://www.dator.fr/tutorial-creer-une- … alisation/
Il essaye dans cette partie d'instaurer un système d'internationalisation. J'ai fait parfaitement toutes les étapes.En exécutant le programme, il se plante sévèrement :

Code:

 Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'Link' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;C:/wamp/www/watchmydesk1/application/modules/frontend/views\helpers/' in C:\wamp\www\watchmydesk1\library\Zend\Loader\PluginLoader.php:412 Stack trace: #0 C:\wamp\www\watchmydesk1\library\Zend\View\Abstract.php(1182): Zend_Loader_PluginLoader->load('Link') #1 C:\wamp\www\watchmydesk1\library\Zend\View\Abstract.php(618): Zend_View_Abstract->_getPlugin('helper', 'link') #2 C:\wamp\www\watchmydesk1\library\Zend\View\Abstract.php(344): Zend_View_Abstract->getHelper('link') #3 [internal function]: Zend_View_Abstract->__call('link', Array) #4 C:\wamp\www\watchmydesk1\application\layouts\layout.phtml(13): Zend_View->link('index', 'language', NULL, Array) #5 C:\wamp\www\watchmydesk1\library\Zend\View.php(108): include('C:\wamp\www\wat...') #6 C:\wamp\www\watchmydesk1\library\Zend\View\Abstract.php(888): Zend_View->_run('C:\wamp\www\wat...') #7 C:\w in C:\wamp\www\watchmydesk1\library\Zend\Controller\Plugin\Broker.php on line 336

En suivant le tuto, j'ai crée tout d'abord la méthode _initTranslate dans le bootstrap :

Code:

<?php protected function _initTranslate()
                    {
                            // On récupère la session du site.
                            $session = Zend_Registry::get('session');
                            // On définit la langue par défaut sur le site.

                            $locale = new Zend_Locale('fr');
                            // On enregistre cette langue dans notre registre.
                            Zend_Registry::set('Zend_Locale', $locale);
                            // Si la langue existe en session, on récupère la session, sinon on prend la valeur par défaut.
                            $langLocale = isset($session->lang) ? $session->lang : $locale;
                            // On lance l'objet de traduction en lui passant les fichiers de langues
                            $translate = new Zend_Translate('array',APPLICATION_PATH.'/languages/fr_FR.php','fr');
                            $translate->addTranslation(APPLICATION_PATH.'/languages/en_US.php','en');
                            // On lui passe la langue courante du site
                            $translate->setLocale($langLocale);
                            // Important pour utiliser le helper.
                            Zend_Registry::set('Zend_Translate', $translate);




                    }

et puis les deux fichiers qui permettent la traduction à savoir: fr_FR et en_US :
fichier fr_FR

Code:

<?php
return array(
'hello' => 'Bonjour et bienvenue sur notre site',
'english' => 'Anglais',
'french' => 'Français'
);

fichier en_US

Code:

<?php
return array(
'hello' => 'Hello and welcome on the website',
'english' => 'English',
'french' => 'French'
);

et puis la méthode languageAction

Code:

<?php  public function languageAction(){
                                    $params = $this->getRequest()->getParams();
                                    if(isset($params['lang']) && in_array($params['lang'], array('en','fr'))){
                                            Zend_Registry::get('session')->lang = $params['lang'];
                                    }
                                    $this->_redirect('/');
                            }
}

et puis l'auteur nous a donnée le code d'un helper Link, je l'ai ajoutée à l'application:

Code:

<?php

class Zend_View_Helper_Link extends Zend_View_Helper_Url
{
    /**
     * Crée un lien de manière plus intuitive que l'aide "Url"
     * 
     * @param string $controllerName
     * @param string $actionName
     * @param string $moduleName
     * @param array $params
     * @param string $name
     * @param boolean $reset
     * @return string
     */
    public function link($controllerName = null, $actionName = null, $moduleName = null, $params = '', $name = 'default', $reset = true)
    {
        if ($controllerName === null) {
            $controllerName = Zend_Controller_Front::getInstance()->getRequest()->getParam('controller');
        }
        if ($actionName === null) {
            $actionName = Zend_Controller_Front::getInstance()->getRequest()->getParam('action');
        }
        if (is_array($params)) {
            foreach($params as $key => $value){
                
                $p .= '/'.$key .'/'.$value;
            }
            
        }
        return parent::url(array(
        'controller'=> $controllerName,
        'action'    => $actionName,
        'module'    => $moduleName), $name, $reset) . $p;
    }
    }

et final le code de layout.phtml et index.phtml :

Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="/favicon.ico" />
<?php echo $this->headTitle() ?> <!-- le titre, il est accessible à partir des vues-->
    <?php echo $this->headScript() ?>
    <?php echo $this->headStyle() ?>
</head>
<body>
        <div id="menu">
      <ul>
        <li><a href="<?php $this->link('index', 'language', null, array('lang' => 'en'))?>"> <?php echo $this->translate("english"); ?></a></li>
        <li><a href="<?php $this->link('index', 'language', null, array('lang' => 'fr'))?>"> <?php echo $this->translate("french"); ?></a></li>
      </ul>
        </div>
    <?php echo $this->layout()->content ?>
</body>
</html>

index.phtml

Code:

<?php
//echo "aaaaaaaaaa";
echo "Index ";
echo $this->translate("hello");

Grosso modo j'ai suit les étapes de ce tuto point par point.
Je pense que le problème vient du faite que le helper Link n'est pas connu par l'application.
Vous trouvez en pièce jointe, un capture de l’arborescence de l'application

aidez moi s'il vous plait à s'en sortir

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