【发布时间】:2011-04-26 12:12:18
【问题描述】:
我正在尝试为我的 ZF 应用程序设置一些路线,但没有走得太远。我有一个控制器“WebServiceController”,它有一个索引操作和一个lookupTransaction 操作。我想使用这样的路线:
ws/
ws/lookupTransaction
理想情况下,我希望任何带有“ws/”前缀的东西都可以转到 WebServiceController 并匹配操作名称。我还不确定该怎么做,但我正在努力让每条路线都能正常工作,所以我添加了这两条路线:
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
function _initRoutes()
{
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->addRoute('ws', new Zend_Controller_Router_Route('ws/', array(
'controller' => 'web-service',
'action' => 'index',
)));
$router->addRoute('ws/lookupTransaction', new Zend_Controller_Router_Route('ws/lookupTransaction', array(
'controller' => 'web-service',
'action' => 'lookup-transaction',
)));
}
}
第一个按预期工作,但第二个没有,我只是收到“应用程序错误”。我究竟做错了什么?只是出于兴趣,如果我删除我的两条路线并尝试转到:
网络服务/查找交易
我仍然遇到同样的错误!
已解决
这是我如何使它与驼峰大小写的动作名称和驼峰大小写 URL 一起使用。
$router->addRoute('ws', new Zend_Controller_Router_Route('ws/:action', array(
'controller' => 'web-service',
'action' => 'index',
)));
$router->addRoute('ws-lookupTransaction', new Zend_Controller_Router_Route('ws/lookupTransaction', array(
'controller' => 'web-service',
'action' => 'lookup-transaction',
)));
谢谢
齐亚德
【问题讨论】:
-
你的WebServiceController有lookupTransactionAction吗?
-
BTW 您可以打开错误日志并检查日志以了解具体原因(可能是您已定义操作但尚未在视图上定义视图/禁用渲染,这将引发例外)。
-
谢谢wimvds,我确实有这个动作,但我没有正确设置环境,所以没有收到完整的错误消息,现在已经修复了。
-
只是想知道:用实际的控制器名称和操作名称而不是 url 的版本配置自定义路由不是更有意义吗?