2010-04-02 6 views
4

Suite à ma précédente question, j'ai toujours des problèmes avec le chargement du fichier xml dans Zend_Navigation.Zend_Navigation ne parvient pas à charger

Je reçois maintenant le message d'erreur suivant:

<b>Fatal error</b>: Uncaught exception 'Zend_Navigation_Exception' with message 'Invalid argument: Unable to determine class to instantiate' in C:\www\mysite\development\website\library\Zend\Navigation\Page.php:223 

J'ai essayé de faire mon fichier navigation.xml ressembler à l'exemple sur le Zend Documentation, mais je ne peux pas sembler l'obtenir travailler. Mon fichier XML ressemble à ceci:

<?xml version="1.0" encoding="UTF-8"?> 
<configdata> 
<navigation> 

    <default> 
     <label>Home</label> 
     <controller>index</controller> 
     <action>index</action> 
     <module>default</module> 

     <pages> 
      <tour> 
       <label>Tour</label> 
       <controller>tour</controller> 
       <action>index</action> 
       <module>default</module> 
      </tour> 

      <blog> 
       <label></label> 
       <uri>http://blog.mysite.com</uri>     
      </blog> 

      <support> 
       <label>Support</label> 
       <controller>support</controller> 
       <action>index</action> 
       <module>default</module> 
      </support> 
     </pages> 
    </default> 

    <users> 
     <label>Home</label> 
     <controller>index</controller> 
     <action>index</action> 
     <module>users</module> 
     <role>guser</role> 
     <resource>owner</resource> 

     <pages> 

      <jobmanger> 
       <label>Job Manager</label> 
       <controller>jobmanager</controller> 
       <action>index</action> 
       <module>users</module> 
       <role>guser</role> 
       <resource>owner</resource> 
      </jobmanger> 

      <myaccount> 
       <label>My Account</label> 
       <controller>profile</controller> 
       <action>index</action> 
       <role>guser</role> 
       <resource>owner</resource> 
       <module>users</module> 
       <pages> 

        <detail> 
         <label>Account Details</label> 
         <controller>profile</controller> 
         <action>detail</action> 
         <module>users</module> 
         <role>guser</role> 
         <resource>owner</resource> 

         <pages> 
          <history> 
           <label>Account History</label> 
           <controller>profile</controller> 
           <action>history</action> 
           <module>users</module> 
           <role>guser</role> 
           <resource>owner</resource> 
          </history> 

          <password> 
           <label>Change Password</label> 
           <controller>profile</controller> 
           <action>changepwd</action> 
           <module>users</module> 
           <role>employer</role> 
           <resource>employers</resource> 
          </password> 
         </pages> 
        </detail> 

... 
</navigation> 
</configdata> 

Je suis en train de charger ce xml dans le bootstrap comme suit:

$configNav = new Zend_Config_Xml('../application/config/navigation.xml', 'navigation'); 
$navigation = new Zend_Navigation($configNav); 
$navView->navigation($navigation); 

Maintenant, je dois avouer que je suis tout à fait eu le mauvais bout du bâton avec cela, mais rapidement à court d'idées, et ça a été une longue semaine.

Merci,

Grant

Répondre

3

Zend_Navigation semble déterminer à utiliser ou non une page ou une page Mvc Uri en vérifiant l'existence de ce contrôleur, action et clés module; ou une clé d'uri. L'erreur que vous signalez est générée si aucune de ces conditions n'est remplie. Tous les exemples de votre document XML ont l'air bien, donc je suppose que plus tard, dans le fichier XML, il vous manquera une des clés requises pour l'une de vos pages. Par exemple. vous avez une action et un contrôleur mais pas de module.

Si vous n'êtes pas en mesure de repérer que l'on est à l'origine du problème, je suggère d'ajouter temporairement une ligne de débogage à Zend_Navigation en insérant:

var_dump($options);exit; 

dans la ligne 222 de Zend/Navigation/page.php . Cela afficherait les clés de l'élément à l'origine de l'erreur, ce qui devrait vous aider à déterminer lequel est dans votre document XML. Supprimer cette ligne à nouveau une fois que vous l'avez réparé!

+0

acclamations ok, mais maintenant avoir un autre problème, et il est en train d'obtenir la navigation dans la vue dans le bootstrap, un autre SO questions sous peu ... –

1

J'ai également eu cette erreur récemment lorsque j'avais accidentellement ajouté 2 entrées pour l'une des pages.

Questions connexes