Не удалось загрузить Zend_Navigation - PullRequest
4 голосов
/ 02 апреля 2010

Исходя из моего предыдущего вопроса , у меня все еще есть проблемы с загрузкой XML-файла в Zend_Navigation.

Теперь я получаю следующее сообщение об ошибке:

<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

Я пытался сделать мой файл navigation.xml похожим на пример в Zend Documentation , однако я просто не могу заставить его работать. Мой XML-файл выглядит так:

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

Я загружаю этот xml в загрузчик следующим образом:

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

Теперь я признаюсь, что у меня совершенно неверный конец, но у нас быстро заканчиваются идеи, и это была длинная неделя.

Спасибо

Грант

Ответы [ 2 ]

3 голосов
/ 02 апреля 2010

Появляется Zend_Navigation, чтобы определить, использовать ли страницу Mvc или страницу Uri, проверяя наличие ключей контроллера, действия и модуля; или ключ URI. Сообщение об ошибке генерируется, если не выполняется ни одно из этих условий. Все примеры в вашем XML-документе выглядят хорошо, поэтому я предполагаю, что в какой-то момент в XML-файле вы пропустите один из необходимых ключей для одной из ваших страниц. Например. у вас есть действие и контроллер, но нет модуля.

Если вы не можете определить, какая из них вызывает проблему, я бы предложил временно добавить строку отладки в Zend_Navigation, вставив:

var_dump($options);exit;

в строку 222 Zend / Navigation / Page.php. Это распечатало бы ключи для элемента, который вызывает ошибку, что должно помочь вам определить, какой из них в вашем документе XML это. Удалите эту строку снова, как только вы исправите ее!

1 голос
/ 21 августа 2013

У меня также недавно была эта ошибка, когда я случайно добавил 2 записи для одной из страниц.

...