由于 Zend 路由,zend 导航不起作用 [英] zend naviagtion not working due to zend route

查看:21
本文介绍了由于 Zend 路由,zend 导航不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

:问题是由 Zend 路由引起的,请检查更新

: the problem was caused due to zend route please check updates

我使用 xml 文件进行导航.

I am using xml file for navigation.

:以下代码来自layout.phtml文件

:the following code is from layout.phtml file

$config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/adminnav.xml', 'nav');
$container = new Zend_Navigation($config);
$this->navigation()->setContainer($container);
echo $this->navigation();

当我在我的编辑页面时,都没有任何菜单链接.所有得到的都是菜单项上的/admin/controller/edit/.有什么想法吗?

when i am in my edit page, all don't any menu link. all get is /admin/controller/edit/ everywhere on menu item. any idea?

我的编辑操作需要 id,如果未提供 id,则会生成并出错.但是 add 和 list 方法工作正常

my edit action takes id, if id is not supplied then it will generate and error. however add and list method works fine

更新::

<?xml version="1.0"?>
<config>
<nav>
    <home>
        <label>home</label>
        <uri>#</uri>
        <pages>
            <home>
                <label>home</label>
                <module>admin</module>
                <controller>home</controller>
                <action>index</action>
            </home>
            <help>
                <label>help</label>
                <module>admin</module>
                <controller>home</controller>
                <action>help</action>
            </help>
        </pages>
    </home>
    <page>
        <label>pages</label>
        <uri>#</uri>
        <pages>
            <static>
                <label>static pages</label>
                <module>admin</module>
                <controller>page</controller>
                <action>index</action>
            </static>
            <editpage>
                <label>static pages</label>
                <module>admin</module>
                <controller>page</controller>
                <action>edit</action>           
            </editpage>
        </pages>
    </page>

    <destination>
        <label>destinations</label>
        <uri>#</uri>
        <pages>
            <list>
                <label>list all</label>
                <module>admin</module>
                <controller>destination</controller>
                <action>index</action>
            </list>
            <featured>
                <label>featured</label>
                <module>admin</module>
                <controller>destination</controller>
                <action>featured</action>                   
            </featured>
            <add>
                <label>add destination</label>
                <module>admin</module>
                <controller>destination</controller>
                <action>add</action>
            </add>
            <editdest>
                <label>edit destination</label>
                <module>admin</module>
                <controller>destination</controller>
                <action>edit</action>           
            </editdest>
        </pages>
    </destination>

    <tours>         
    <label>tours</label>
        <uri>#</uri>
        <pages>
            <list>
                <label>list tours</label>
                <module>admin</module>
                <controller>tour</controller>
                <action>index</action>
            </list>
            <featured>
                <label>featured tours</label>
                <module>admin</module>
                <controller>tour</controller>
                <action>featured</action>
            </featured>
            <add>
                <label>add tours</label>
                <module>admin</module>
                <controller>tour</controller>
                <action>add</action>
            </add>
            <edittour>
                <label>edit tours</label>
                <module>admin</module>
                <controller>tour</controller>
                <action>add</action>
            </edittour>
        </pages>
    </tours>

    <hotels>            
    <label>hotels and resort</label>
        <uri>#</uri>
        <pages>
            <list>
                <label>list hotel</label>
                <module>admin</module>
                <controller>hotel</controller>
                <action>index</action>
            </list>
            <add>
                <label>add hotel</label>
                <module>admin</module>
                <controller>hotel</controller>
                <action>add</action>
            </add>
            <edithotel>
                <label>add hotel</label>
                <module>admin</module>
                <controller>hotel</controller>
                <action>add</action>
            </edithotel>
        </pages>
    </hotels>

    <message>           
        <label>message</label>
        <uri>#</uri>
        <pages>
            <all>
                <label>all message</label>
                <module>admin</module>
                <controller>message</controller>
                <action>index</action>
            </all>
            <contactus>
                <label>contact</label>
                <module>admin</module>
                <controller>message</controller>
                <action>contact</action>
            </contactus>
            <inquiry>
                <label>inquiry</label>
                <module>admin</module>
                <controller>message</controller>
                <action>inquiry</action>
            </inquiry>
            <reservation>
                <label>reservation</label>
                <module>admin</module>
                <controller>message</controller>
                <action>reservation</action>
            </reservation>
        </pages>
    </message>

    <advertisement>         
        <label>advertisement</label>
        <uri>#</uri>
        <pages>
            <list>
                <label>list ads</label>
                <module>admin</module>
                <controller>advertisement</controller>
                <action>index</action>
            </list>
            <add>
                <label>add ads</label>
                <module>admin</module>
                <controller>advertisement</controller>
                <action>add</action>
            </add>
            <editad>
                <label>edit ads</label>
                <module>admin</module>
                <controller>advertisement</controller>
                <action>edit</action>
            </editad>
        </pages>
    </advertisement>

    <setting>           
        <label>settings</label>
        <uri>#</uri>
        <pages>
            <view>
                <label>view</label>
                <module>admin</module>
                <controller>setting</controller>
                <action>view</action>
            </view>
            <account>
                <label>account setting</label>
                <module>admin</module>
                <controller>setting</controller>
                <action>account</action>
            </account>
            <site>
                <label>site setting</label>
                <module>admin</module>
                <controller>setting</controller>
                <action>site</action>
            </site> 
        </pages>
    </setting>
</nav>
</config>

UPDATE::route 用于 bootstrap.php 上的编辑操作

UPDATE::route for the edit action on bootstrap.php

    $frontcontroller = Zend_Controller_Front::getInstance();
    $router = $frontcontroller->getRouter('router');

    //add route  for edit page so that pageid is not displayed in the url
    $router->addRoute(
        'edit-page',
        new Zend_Controller_Router_Route('admin/page/edit/:pageid', array(
            'module' => 'admin',
            'controller' => 'page',
            'action'    => 'edit',
            'pageid'    => 'pageid'
        ))
    );

更新::致菲尔

<editdest>
    <label>edit destination</label>
    <module>admin</module>
    <controller>destination</controller>
    <action>edit</action>   
    <route>12</route>       
</editdest>

此错误::

Fatal error: Zend_Controller_Router_Exception: Route 12 is not defined in
/usr/share/php/libzend-framework-php/Zend/View/Helper/Navigation/HelperAbstract.php 
on line 522 

推荐答案

如果涉及静态路由,则需要在所有导航页面设置路由名称.这是因为导航视图助手使用 Url 视图助手创建链接.

If there are any static routes involved, you need to set the route name on all navigation pages. This is because the navigation view helper uses the Url view helper to create links.

如果没有路由名称,则使用当前路由.

If there is no route name present, it uses the current route.

如果当前路由是静态路由,则无论抛出什么参数,它都只会解析为一个 URL.

If the current route is a static one, it will only ever resolve to one URL, no matter what parameters are thrown at it.

这篇关于由于 Zend 路由,zend 导航不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆