我正在尝试为我的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',
)));
}
}
第一个按预期工作,但第二个没有,我只是得到'应用程序错误'。我究竟做错了什么?只是出于兴趣,如果我删除了我的两条路线并试着去:
web的服务/查找事务
我仍然得到同样的错误!
以下是我如何使用驼峰式动作名称和驼峰式网址。
$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',
)));
由于
齐亚德
答案 0 :(得分:0)
尝试这一条路线作为两个问题的解决方案:
$router->addRoute('ws', new Zend_Controller_Router_Route('ws/:action', array(
'controller' => 'web-service',
'action' => 'index',
)));
然后将action参数用作默认值,因此如果URL中未指定任何操作,则将使用index。否则它将路由到URL中的操作。因此,example.com/ws/lookupTransaction
将转到您控制器中的lookuptransactionAction()
。
如果仍然出现错误,请发布错误消息,以便我们查看问题所在。
答案 1 :(得分:0)
路由器实际上将URL转换为小写。因此,正确的URL应该是全部小写的破折号分隔的单词。另外我不确定是否可以在路由名称中使用斜杠(addRoute()
的第一个参数)。