1

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

出于某种奇怪的原因,我的路线出现说动作不存在,除非我将骆驼外壳更改为该动作名称的所有小写字母,然后它可以正常工作。但这违反了命名约定!我也不想让我的代码马虎。

这是我的路线:

$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"
    )
    )
);

快乐编码:)

4

1 回答 1

-1

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

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

saveartistsAction()

做其他事情的事情Action()

于 2010-10-06T05:45:54.347 回答