Zend framework 由于zend航路,zend导航不工作
编辑:: 问题是由zend route引起的,请检查更新 我正在使用xml文件进行导航 编辑::以下代码来自layout.phtml文件Zend framework 由于zend航路,zend导航不工作,zend-framework,Zend Framework,编辑:: 问题是由zend route引起的,请检查更新 我正在使用xml文件进行导航 编辑::以下代码来自layout.phtml文件 $config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/adminnav.xml', 'nav'); $container = new Zend_Navigation($config); $this->navigation()->setContainer($container); echo
$config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/adminnav.xml', 'nav');
$container = new Zend_Navigation($config);
$this->navigation()->setContainer($container);
echo $this->navigation();
当我在我的编辑页面中时,所有菜单都没有任何链接。菜单项上的所有get都是/admin/controller/edit/everywhere。有什么想法吗
我的编辑操作采用id,如果未提供id,则会生成错误。然而,add和list方法可以很好地工作
更新::
<?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>
更新::致菲尔
<editdest>
<label>edit destination</label>
<module>admin</module>
<controller>destination</controller>
<action>edit</action>
<route>12</route>
</editdest>
如果涉及任何静态路由,则需要在所有导航页面上设置路由名称。这是因为导航视图帮助器使用Url视图帮助器创建链接 如果没有路由名称,则使用当前路由
如果当前路由是静态路由,则无论向其抛出什么参数,它都只能解析为一个URL。您应该使用在
$router->addRoute
中定义的路由
应该是:
$router->addRoute(
'edit-page',
new Zend_Controller_Router_Route('admin/page/edit/:pageid', array(
'module' => 'admin',
'controller' => 'destination',
'action' => 'edit',
'pageid' => 'pageid'
))
);
<editdest>
<label>edit destination</label>
<module>admin</module>
<controller>destination</controller>
<action>edit</action>
<route>edit-page</route>
<params>
<pageid>12</pageid>
</params>
</editdest>
据我所知,导航在添加和列表操作中起作用,但它不仅仅在编辑操作中起作用,是吗?所有操作(即编辑、列表、添加)的菜单是否相同?您还可以提供其他代码片段,例如编辑操作、添加操作(因为它可以工作)、xml文件中的代码片段。向我们展示xml。请格式化你的问题。为什么不使用大写字母?@Marcin菜单中的所有操作都是相同的,它是从布局文件加载的。是的,存在一个路由,但它认为它不是静态的。请参见编辑above@explorex在任何情况下,尝试在xml配置中的每个导航页面上设置路由名称,即使只是default@Phil我按照你的建议试了一下,结果出了差错。请详细说明above@explorex. 不要加12,只需加上default@Phil我没有发现新的错误,但我又回到了原来的问题。菲尔,告诉我最后一件事,我遇到这个问题是因为路线还是导航。我发现我是因为路线而出错的。请检查路线更新。如果你有什么建议,那就太好了appreciable@explorer你真正的问题是什么?
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
$router->addRoute(
'edit-page',
new Zend_Controller_Router_Route('admin/page/edit/:pageid', array(
'module' => 'admin',
'controller' => 'destination',
'action' => 'edit',
'pageid' => 'pageid'
))
);
<editdest>
<label>edit destination</label>
<module>admin</module>
<controller>destination</controller>
<action>edit</action>
<route>edit-page</route>
<params>
<pageid>12</pageid>
</params>
</editdest>
// (pseudocode, not tested)
$this->navigation()->getContainer()->findOneByLabel('edit destination')->params->pageid = 12