Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-02-2015 14:20:49

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

problème zend_navigation xml

Bonjour à tous,

je me confronte à un problème par rapport à la navigation d'un menu xml, malgré de multiples recherches.

Mon problème est que je n'affiche pas mon menu.

J'ai créé un module "application" avec pour l'instant un seul controller et une seule action "index/index"

voici mon xml :

Code:

<?xml version="1.0" encoding="UTF-8"?>
<nav>
    <accueil>
        <label>Accueil</label>
        <module>application</module>
        <controller>index</controller>
        <action>index</action>
    </accueil>
</nav>

et voici le code que j'ai mis dans le layout.phtml

Code:

$reader    = new Zend\Config\Reader\Xml();
$config     = $reader->fromFile(PATH_ROOT . '/config/navigation.xml');
$container = new Zend\Navigation\Navigation($config);

$container contient bien les infos du xml mais impossible de l'afficher.

Je voulais commencer par quelque chose de simple.

Pourriez vous m'aider s'il vous plaît ?

Je vous en remercie d'avance.

Cordialement,

Hors ligne

 

#2 09-02-2015 17:58:44

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: problème zend_navigation xml

Salut, pourrais tu donner un peu plus de détails sur la manière dont tu affiches $container. Parce que là avec le code que tu donnes c'est normal que ça fonctionne pas et j'espère que tu n'as pas fait que ça smile.

Hors ligne

 

#3 10-02-2015 00:13:57

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

bonjour Orkin,

tout d'abord merci pour ta réponse.
Ensuite Désolé c'est peut être la fatigue mais j'ai oublié de retirer un die dans mon code qui était déstiné à d'autres tests. Désolé pour le dérangement.

Cordialement,

Hors ligne

 

#4 10-02-2015 15:39:28

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

rebonjour,

j'ai modifié mon code xml :
c'est vraiment à titre d'exemple car j'aimerais vraiment comprendre.

Code:

<accueil>
        <label>Accueil</label>
        <module>application</module>
        <controller>index</controller>
        <action>index</action>
        <uri>/</uri>
        <pages>
            <index>
                <label>Accueil</label>
                <controller>index</controller>
                <action>index</action>
                <uri>index/index</uri>
            </index>
        </pages>
    </accueil>

dans mon layout :

Code:

$reader     = new Zend\Config\Reader\Xml();
$config      = $reader->fromFile(PATH_ROOT . '/config/navigation.xml');
$container = new Zend\Navigation\Navigation($config);
foreach ($container as $page) {
    echo '<li><a href="'. $page->uri . '">' .$page->label .'</a></li>';
}

mais je trouve cela très moche et pas très flexible.
je sais que dans zend 1.
on pouvait avoir le rendu de cette manière
pour le menu :

Code:

echo $this->navigation()->menu()->renderMenu(null, array('maxDepth'=>0));

et le sous-menu par rapport au menu actif

Code:

echo $this->navigation()->menu()->renderMenu(null, array('minDepth'=>1,'maxDepth'=>1,'onlyActiveBranch'=>true,'renderParents'=>false));

Mais je ne vois pas comment m'y prendre par rapport à un fichier de config xml.

Pourriez vous m'aider s'il vous plaît ?

merci d'avance.

Hors ligne

 

#5 10-02-2015 18:34:20

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

Je cherche à faire toute la navigation dans un fichier xml et non par module.

Pourriez vous m'aider s'il vous plaît ?

merci d'avance.

Hors ligne

 

#6 11-02-2015 11:35:52

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

Hello,
je connais pas trop trop ce genre de navigation mais voici un petit liens qui pourra peut être t'aiguiller :

http://framework.zend.com/manual/curren … iners.html

J'ai l'impression que dans la navigation tu déclare les "urls" que tu veux dans ton menu et non les routes.
Tu peu donc déclarer tes routes dans chaque module (comme c'est prévu ^^) et créer un seul xml pour tout ton menu. smile

EDIT:
le liens posté à l'origine était pour zf1 j'avais pas bien vu. Je le laisse si quelqu'un le recherche, il pourra toujours s'en servir :
http://framework.zend.com/manual/1.12/f … iners.html

Dernière modification par flobrflo (11-02-2015 11:37:56)

Hors ligne

 

#7 11-02-2015 13:12:27

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

Bonjour Flobrflo,

merci pour ta réponse,

je vais regarder de plus près mais je te cache pas que j'ai déjà pas mal écumé de liens lol.
Le problème soit je m'y prends mal pour chercher ou j'arrive pas à  trouver de cas concrets.
J'aimerais comprendre via le biais du xml si on peut directement perndre le "default" ou obligatoirement surcharger et dans ce cas je ne sais pas trop comment m'y prendre.

Si quelqu'un veut bien m'accompagner dessus, ce serait génial.
Je commence seulement zf2.

merci d'avance.

Hors ligne

 

#8 11-02-2015 14:11:39

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

Ici tu a un cas concret avec un tableau et non un xml.
(Est ce qu'il est applicable à ton cas? ^^)
http://framework.zend.com/manual/2.0/en … ation.html

Qu'entend tu par "prendre le défaut"?

Hors ligne

 

#9 11-02-2015 14:35:34

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

FlobrFlo,

en fait c'est dans le rendu

j'aimerais utiliser cela comme c'était le cas pour Zend 1

Code:

echo $this->navigation('Navigation')->menu()->setUlClass('nav')
                ->setMinDepth(1)
                ->setMaxDepth(1)
                ->setRenderInvisible(false)
                ->render();

et l'argument passé à navigation() peut être default mais je t'avoue je sais plus trop quoi faire j'ai regardé beaucoup de tuto mais c'est qu'avec un fichier php.
Et moi j'aimerais le faire avec xml mais je n'y arrive pas malgré tout.
Mais j'arrive pas à trouver de cas concret qui parte du fichier de config à l'affichage.
J'ai même créer un module pour surcharger Zend\Navigation\Service\DefaultNavigationFactory mais sans succès, je suis dans l'impasse la plus totale.

Hors ligne

 

#10 11-02-2015 14:39:11

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

j'avais réussi en faisant

Code:

$reader     = new Zend\Config\Reader\Xml();
$config      = $reader->fromFile(PATH_ROOT . '/config/navigation.xml');
$container = new Zend\Navigation\Navigation($config);

et j'itérai sur le $container, cela me donnais ce que je voulais mais après faut s'occuper de si tel menu est "actif" j'affiche les pages associé, mais je trouve pas que ce soit propre.

J'aimerais le faire de manière "simple" :-) , comme cité dans mon message précédent.

Merci d'avance.

Hors ligne

 

#11 11-02-2015 14:42:17

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

Dans la partie Menu Helpeer, tu a la directive :

Code:

[lang=php]
renderMenu($container = null, $options = array())

en dessous tu a les possibilités d'option de la méthode smile

Hors ligne

 

#12 11-02-2015 15:04:42

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

merci flobrflo, ok je vais regarder mais du coup je ne sais pas quoi mettre comme paramètre à navigation().

Hors ligne

 

#13 11-02-2015 15:10:35

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

Tu n'a pas déjà créé ton $container? (posté un peu plus haut)

Après c'est comme ça dans ta vue:

Code:

[lang=php]
<?php
echo $this->navigation()->menu()->renderMenu($container, array(/* option possibles*/));
?>

Hors ligne

 

#14 11-02-2015 15:23:48

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

j'ai fait ce code :

Code:

echo $this->navigation()->menu()->setUlClass('nav')
                ->setMinDepth(1)
                ->setMaxDepth(1)
                ->setRenderInvisible(false)
                ->renderMenu($container, array('maxDepth' => 0));

mais cela ne m'affiche rien.

mon $container est rien rempli

Code:

object(Zend\Navigation\Navigation)[233]
  protected 'pages' => 
    array (size=1)
      '000000007bf5ff20000000000929a463' => 
        object(Zend\Navigation\Page\Mvc)[234]
          protected 'action' => string 'index' (length=5)
          protected 'controller' => string 'index' (length=5)
          protected 'query' => null
          protected 'params' => 
            array (size=0)
              ...
          protected 'route' => null
          protected 'hrefCache' => null
          protected 'routeMatch' => null
          protected 'useRouteMatch' => boolean false
          protected 'router' => null
          protected 'label' => string 'Accueil' (length=7)
          protected 'fragment' => null
          protected 'id' => null
          protected 'class' => null
          protected 'title' => null
          protected 'target' => null
          protected 'rel' => 
            array (size=0)
              ...
          protected 'rev' => 
            array (size=0)
              ...
          protected 'order' => null
          protected 'resource' => null
          protected 'privilege' => null
          protected 'permission' => null
          protected 'textDomain' => null
          protected 'active' => boolean false
          protected 'visible' => boolean true
          protected 'parent' => 
            &object(Zend\Navigation\Navigation)[233]
          protected 'properties' => 
            array (size=2)
              ...
          protected 'pages' => 
            array (size=1)
              ...
          protected 'index' => 
            array (size=1)
              ...
          protected 'dirtyIndex' => boolean true
  protected 'index' => 
    array (size=1)
      '000000007bf5ff20000000000929a463' => null
  protected 'dirtyIndex' => boolean true

je vois pas ce qu'il manque, pourtant sur zf1 cela me paraissait tellement simple, mais la sur zf2, c'est autre chose pour l'instant.

Hors ligne

 

#15 11-02-2015 15:36:09

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

Alors relis un peu ton code, l'appel du renderMenu surtout wink
Je te remet la manière de l'utiliser :

Code:

[lang=php]
echo $this->navigation()->menu()->renderMenu($container, array(/* option possibles*/));

Hors ligne

 

#16 11-02-2015 15:40:06

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

j'ai mis ce code mais il me pète une erreur

Fatal error: Uncaught exception 'Zend\Navigation\Exception\DomainException' with message 'Zend\Navigation\Page\Mvc::getHref cannot execute as no Zend\Mvc\Router\RouteStackInterface instance is composed' in C:\wamp\library\Zend\Navigation\Page\Mvc.php on line 205

( ! ) Zend\Navigation\Exception\DomainException: Zend\Navigation\Page\Mvc::getHref cannot execute as no Zend\Mvc\Router\RouteStackInterface instance is composed in C:\wamp\library\Zend\Navigation\Page\Mvc.php on line 205

je regarde.

Hors ligne

 

#17 11-02-2015 15:45:28

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

j'ai regardé la méthode getHref et this->router est vide donc pas une instance de RouteStackInterface

ai-je bien fait mon xml ?

Code:

<?xml version="1.0" encoding="UTF-8"?>
<nav>
    <accueil>
        <label>Accueil</label>
        <module>application</module>
        <controller>index</controller>
        <action>index</action>
        <uri>/</uri>
        <pages>
            <index>
                <label>Accueil</label>
                <controller>index</controller>
                <action>index</action>
                <uri>index/index</uri>
            </index>
        </pages>
    </accueil>
</nav>

merci pour ton aide, c'est très gentil.

Hors ligne

 

#18 11-02-2015 16:04:42

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

Alors la par contre je sais pas vraiment, je serai toi j'essairai quelque chose de plus basique du style:

Code:

<nav>
  <home>
      <label>Home</label>
      <order>-100</order>
      <module>default</module>
      <controller>index</controller>
      <action>index</action>
  </home>
</nav>
//Edit : pris dans la doc

et en fonction du résultat étoffé mon menu ^^

Dernière modification par flobrflo (11-02-2015 16:05:17)

Hors ligne

 

#19 11-02-2015 16:06:16

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

arf j'ai toujours la même erreur, j'avoue je ne vois pas trop :-(

Hors ligne

 

#20 11-02-2015 16:19:55

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

il est possible qu'au lieu de :
<module>default</module>

il faille :
<module>application</module>

/en fonction de la route que tu veux utiliser

Hors ligne

 

#21 11-02-2015 16:23:34

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

ouais je l'ai modifié , j'ai oublié de le dire d'ailleurs j'ai l'erreur même en spécifiant le bon module.

Code:

<?xml version="1.0" encoding="UTF-8"?>
<nav>
    <home>
        <label>Accueil</label>
        <order>-100</order>
        <module>application</module>
        <controller>index</controller>
        <action>index</action>
    </home>
</nav>

Hors ligne

 

#22 11-02-2015 16:28:00

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: problème zend_navigation xml

Alors regarde du cotés des routeur dans la partie "Navigation setup used in examples" de la doc.

Il semblerait que ta navigation n'arrive pas à retrouver les routes correspondantes aux urls.

Hors ligne

 

#23 11-02-2015 16:29:57

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

j'ai rajouter <router></router> dans le xml

il me balance une autre erreur

Catchable fatal error: Argument 1 passed to Zend\Navigation\Page\Mvc::setRouter() must implement interface Zend\Mvc\Router\RouteStackInterface, string given, called in C:\wamp\library\Zend\Navigation\Page\AbstractPage.php on line 970 and defined in C:\wamp\library\Zend\Navigation\Page\Mvc.php on line 485

je vais regarder ton lien déjà merci flobrflo

Hors ligne

 

#24 11-02-2015 16:34:25

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

au cas ou je mets mon fichier de config de l'appli :

Code:

<?php

return [

    /* Configuration des Listerners du ModuleManager. */
    'module_listener_options' => [
        'module_paths' => [
            PATH_ROOT.'/modules',
        ],
    ],

    /* Modules à charger. */
    'modules' => [
         'Application',
        //'Contact',
        /*'Contract',
        'Customer',
        'Dashboard',
        'Device',
        'Excel',
        'Login',
        'Tickets',
        'Validation',*/
        //'Yaub'
        //'application',
    ],

    'service_manager' => [
        'factories' => [
            'Db'                          => 'Zend\Db\Adapter\AdapterServiceFactory',
            //'Navigation'                 => 'Zend\Navigation\Service\DefaultNavigationFactory',
            //'yaub_navigation_factory' => 'Yaub\Navigation\YaubNavigationFactory'
        ]
    ],
    'db' => [
        'driver'   => 'PDO Mysql',
        'host'     => 'localhost',
        'dbname'   => 'formation',
        'username' => 'root',
        'password' => ''
    ]
];

et celui de mon module

Code:

<?php

//return [
//
//    /* Définition des routes. */
//    'router' => [
//        'routes' => [
//            'default' => [
//                'type'         => 'Segment',
//                'options'    => [
//                    'route' => '/:module/:controller/:action',
//                ],
//            ],
//        ],
//    ],
//
//
//    /* Définition des contrôleurs du Module. */
//    'controllers' => [
//        'invokables' => [
//            'Index' => 'Application\Controller\Index',
//        ],
//    ],
//
//    /* Configuration de la gestion des vues. */
//    'view_manager' => [
//        'doctype'                 => 'HTML5',
//        //'layout'                => 'skeleton',
//        //'not_found_template'    => 'notfound',
//        'not_found_template'    => 'error/404',
//
//        /* Configuration du chargeur de templates par mapping. */
//        'template_map' => [
//        //    'skeleton'    => "{$sPath}/views/skeleton.phtml",
//        //    'notfound'    => "{$sPath}/views/error-404.phtml",
//            'layout/layout'           => __DIR__ . '/../views/layout/layout.phtml',
//            'application/index/index' => __DIR__ . '/../views/application/index/index.phtml',
//            'error/404'               => __DIR__ . '/../views/error/404.phtml',
//        ],
//
//        /* Configuration du chargeur TemplatePathStack. */
//        'template_path_stack' => [
//            "{$sPath}/views",
//        ],
//    ],
//];


/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
 * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

return array(
    'router' => array(
        'routes' => array(
            'home' => array(
                'type' => 'Segment',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        'controller' => 'Application\Controller\Index',
                        'action'     => 'index',
                    ),
                ),
            ),
            // The following is a route to simplify getting started creating
            // new controllers and actions without needing to create a new
            // module. Simply drop new controllers in, and you can access them
            // using the path /application/:controller/:action
            'application' => array(
                'type'    => 'Segment',
                'options' => array(
                    'route'    => '/application',
                    'defaults' => array(
                        '__NAMESPACE__' => 'Application\Controller',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/[:controller[/:action]]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),
    'service_manager' => array(
        'abstract_factories' => array(
            'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
            'Zend\Log\LoggerAbstractServiceFactory',
        ),
        'aliases' => array(
            'translator' => 'MvcTranslator',
        ),
    ),
    'translator' => array(
        'locale' => 'fr_FR',
        'translation_file_patterns' => array(
            array(
                'type'     => 'gettext',
                'base_dir' => __DIR__ . '/../language',
                'pattern'  => '%s.mo',
            ),
        ),
    ),
    'controllers' => array(
        'invokables' => array(
            'Application\Controller\Index' => 'Application\Controller\Index'
        ),
    ),
    'view_manager' => array(
        'display_not_found_reason' => true,
        'display_exceptions'       => true,
        'doctype'                  => 'HTML5',
        'not_found_template'       => 'error/404',
        'exception_template'       => 'error/index',
        'template_map' => array(
            'layout/layout'           => __DIR__ . '/../views/layout/layout.phtml',
            'application/index/index' => __DIR__ . '/../views/application/index/index.phtml',
            'error/404'               => __DIR__ . '/../views/error/404.phtml',
            'error/index'             => __DIR__ . '/../views/error/index.phtml',
        ),
        'template_path_stack' => array(
            __DIR__ . '/../views',
        ),
    ),
    // Placeholder for console routes
    'console' => array(
        'router' => array(
            'routes' => array(
            ),
        ),
    ),
);

Hors ligne

 

#25 11-02-2015 16:42:45

yoann92
Membre
Date d'inscription: 02-07-2012
Messages: 75

Re: problème zend_navigation xml

mais il est vrai qu'il n'y a pas beaucoup voir quasiment pas d'exemples sur le xml alors qu'avec un array on en a.

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