我'm添加一个动作到一个插件,但我得到一个404错误的URL,我希望找到视图


I'm adding an action to a plugin but I get a 404 error at the URL where I expect to find the view

我的电子邮件表单插件工作正常,我正试图添加一个电子邮件表单提交操作查看从管理员提交的电子邮件表单。

目录树是这样的,我添加的文件用星号标记。

app/plugins/email_forms
    controllers
        email_forms_controller.php
        **email_form_submissions_controller.php**
    models
        email_form.php
        **email_form_submission.php**
    views
        email_forms
            admin_view.ctp
        email_forms_submissions
            **admin_view.ctp**
            **admin_index.ctp**

在数据库中,我有一个名为email_form_submission的表。因此,当我访问http://www.example.com/admin/email-forms/email_form_submissions/index时,我希望看到admin_index.ctp的空白视图。相反,我得到一个404。

控制器和模型文件中没有任何代码,只有样板文件"class EmailFormSubmissionsController extends AppController {}"

有人能看出我做错了什么吗?

首先,我建议您通读CakePHP烹饪书,因为您似乎对一些非常基本的东西感到困惑:http://book.cakephp.org/1.3/en/

其次,如果你把你的Cake的版本号写在上面会有帮助。从你的命名方案来看,我猜你用的是蛋糕1。X,所以我要这样写我的答案

第三,从你的问题中并没有完全清楚什么是电子邮件表单提交。它是属于email_forms_controller.php的一个动作吗?是控制器吗?在我的回答中,我将假设它实际上是一个控制器,因为您的代码和文件结构似乎表明了这一点。

添加新页面

基本CakePHP URL的格式如下,除非你通过修改路由文件来改变它们的默认行为。参数是可选的。

http://domain.com/prefix/controller/action[/arg1/arg2/etc...]

要创建相应的页面,首先需要将其添加到控制器:

class Controller extends AppController
{
      function prefix_action($arg1, $arg2, etc...) {}
}

然后创建一个视图文件,并将其放在views文件夹的适当位置:

views
     controller
            prefix_action.ctp

在您的例子中,在适当的位置已经有了一个视图文件。但是您仍然需要在控制器中添加:

class EmailFormSubmissionsController extends AppController 
{
     function admin_index() {}
}
然后,您应该在以下位置找到该页面(注意,操作是"index",URL中的最后一个"index"实际上是可选的,所以我把它去掉了):
http://www.example.com/admin/email_form_submissions