【问题标题】:Why are my camel cased actions in Zend MVC attempting to call non-camelcased method names?为什么我在 Zend MVC 中的驼峰式操作尝试调用非驼峰式方法名称?
【发布时间】:2010-07-22 22:38:06
【问题描述】:

动作名称的 Zend 标准是 camelCase,但如果我创建一个带有驼峰大小写的动作,请求会失败,因为它试图调用没有驼峰大小写的方法(动作)!

例子:

我在模块“abc”中有一个名为“changeEmail”的操作。方法是“changeEmailAction”(由 Zend Tool 创建)。如果我尝试访问 /abc/changeEmail,我会收到一条错误消息,提示“消息:操作“changeemail”不存在并且没有被困在 __call() 中。

我能够使它工作的唯一方法是只创建全小写的动作名称。这使得可读性很差,并且与建议的命名约定相反。我错过了什么?

【问题讨论】:

    标签: php zend-framework camelcasing


    【解决方案1】:

    Zend Framework Action Controller/Router 的默认行为是强制使用全小写的 URL 命名方案,用破折号分隔单词。

    http://example.com/controller/my-thing
    

    当此 URL 被翻译成动作名称时,将应用驼峰式大小写。

    public function myThingAction()
    {
    }
    

    如果您真的很想使用驼峰式 URL,您应该考虑使用自定义 Zend Router 配置您的应用程序

    【讨论】:

    • 谢谢。我在发帖几个小时后发现了这一点,但您的解释将对其他起初不太“明白”的人有所帮助。
    【解决方案2】:

    我找到了答案:

    在url中,对于多词动作名称,必须用连字符分隔单词,即

    /abc/change-email

    将调用控制器中的方法“changeEmailAction”。

    【讨论】:

      【解决方案3】:

      您应该在网址中使用连字符分隔的名称,例如/abc/change-email.

      【讨论】:

        猜你喜欢
        • 2010-12-09
        • 1970-01-01
        • 2020-03-31
        • 1970-01-01
        • 1970-01-01
        • 2020-02-01
        • 2011-06-07
        • 1970-01-01
        • 2015-12-06
        相关资源
        最近更新 更多