【问题标题】:Symfony 2.4 CRUD please; Controller not found请使用 Symfony 2.4 CRUD;找不到控制器
【发布时间】:2014-04-13 10:17:49
【问题描述】:

我(几乎)是 Symfony 的新手,我正在使用 2.4,但我遇到了一个让我很头疼的问题。几天来我一直无法解决这个问题。

我使用 app/console 命令来构建我的基本代码;从实体到 crud: 学说:生成:实体(构建模型),然后是代码关系等 学说:生成:实体(生成setter、getter等) 学说:模式:更新--force(更新到数据库的所有模型) generate:doctrine:crud(制作控制器、表单等)

最后,由于我选择通过注解声明路由,我将所有控制器路由导入到我的包的 routing.yml 文件中,例如:

AutocondatECRBundle_controllers:
    resource: "@AutocondatECRBundle/Controller"
    type:     annotation

据我所知,这使得生成的控制器中的所有路由在 crud 生成时都可用。但是,无论我尝试测试什么路线,Symfony 都会不断告诉我:

FileLoaderLoadException:无法从“/var/www/autocondat-ecr/src/Autocondat/ECRBundle/Resources/config/”导入资源“/var/www/autocondat-ecr/src/Autocondat/ECRBundle/Controller”路由.yml”。 (Autocondat\ECRBundle\Controller\Clasificacion_EstudioController 类不存在)

无论我选择测试什么控制器或路由,总是找不到控制器类,相信我;那些课程在那里。

-名字或案例没有错别字 - 有类,有控制器 -路线在那里,即使使用也无法加载:

pattern: /whatever
defaults: { _controller: AutocondatECRBundle:ControllerWhatever:index }

这快把我逼疯了。

对于任何能够帮助我的人,这里是所有项目的来源: Link to the project

注意事项: -我的项目中有几个捆绑包;我正在测试的是 AutocondatECRBundle。 -security.yml 文件中的安全性已被停用,以便更快地对其进行测试。 -当然,使用相同的控制台命令也可以快速生成数据库。

非常感谢您的帮助!

【问题讨论】:

    标签: php symfony doctrine-orm controller


    【解决方案1】:

    为你的班级Autocondat\ECRBundle\Controller\Clasificacion_EstudioController

    Symfony 将命名空间分隔符 \ 和下划线 _ 解析为目录分隔符,使用 PSR-0 autoloading standards 自动加载类。

    这意味着它期望你的类位于文件src/Autocondat/ECRBundle/Controller/Clasificacion/EstudioController.php中。

    将您的班级命名为ClasificacionEstudioController,将文件命名为ClasificacionEstudioController.php

    【讨论】:

    • 完全正确。非常感谢你的帮助。现在我需要更改所有模板、控制器、表单、实体等......以便从文件夹名称和类名称中删除所有下划线。我希望在 Symfony Controller 或 CRUD 手册页中有对这个约定的引用。
    猜你喜欢
    • 2012-10-15
    • 2018-02-22
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    相关资源
    最近更新 更多