Zend Framework在使用路由器时并没有寻找可靠的动作

时间:2010-10-05 23:15:53

标签: zend-framework camelcasing zend-controller-router

大家好我有一点麻烦,希望有人可以对此有所了解。

由于一些奇怪的原因,我的路线出现说不存在动作,除非我将骆驼套管更改为该动作名称的所有小写,然后它工作正常。但那违背了命名惯例!而且我也不想让我的代码变得草率。

继承我的路线:

$FrontController = Zend_Controller_Front::getInstance();
$Router = $FrontController->getRouter();
$Router->addRoute("artistsave",
    new Zend_Controller_Router_Route
    (
        "artist/save-artist",
        array(
        "controller"=>"artist",
        "action"    =>"saveArtist"
        )
    )
);

现在我应该在ArtistController中查看动作saveArtistsAction,但它不会引发此错误:

  

哎呀你遇到了以下情况   错误。行动“saveartist”没有   存在并且没有被困在__call()

所以它似乎已经删除了我在路由器中的骆驼外壳,因为艺术家的a现在是错误的小写,如果我重命名我的动作以匹配它,它可以工作!

任何想法都是为什么它不寻找saveArtist?

我意识到我可以重命名它以保存,因为它是艺术家对象的一部分,但现在我已经发现了这一点,我希望在未来的其他时间再解开之前了解它。

提前感谢任何帮助:)


我发出这封信后,我发现了这一点,但我觉得其他人可能因为同样的错误而堕落,所以最好把它留在这里告诉解决方案!

在路由器中,它仍处于URL格式化中我的意思是使用连字符而不是驼峰套管然后框架将其解决。所以这是我的更正/解决方案:

$Router->addRoute("artistsave",
    new Zend_Controller_Router_Route
    (
    "artist/save-artist",
    array(
            "controller"=>"artist",
        "action"    =>"save-artist"
    )
    )
);

快乐编码:)

1 个答案:

答案 0 :(得分:-1)

命名约定指定您的操作应全部小写,直到单词“Action”。

所以命名行动的正确方法是:

saveartistsAction()

somethingthatdoessomethingelseAction()