【问题标题】:Classes, Namespacing, bin/console commands类、命名空间、bin/console 命令
【发布时间】:2017-02-06 23:20:47
【问题描述】:

我今天下午刚开始使用 Symfony 框架。我转到“CRUD”,并按照教程使用内置工具生成 CRUD。但是,使用默认命令时,我遇到了错误。

Attempted to load class "Task" from namespace "AppBundle\Controller".
Did you forget a "use" statement for another namespace?
500 Internal Server Error - ClassNotFoundException

This 是我关注的视频。

  1. 我从 Symfony 的空白安装开始。
  2. 已连接数据库。
  3. php bin/console generate:doctrine:entity,写了 AppBundle:Tasks,然后按回车键通过所有选项默认为 创建一个简单的名称和注释字段。
  4. Ran php bin/console generate:doctrine:crud 写了 AppBundle:Tasks,并在所有选项默认值中按 Enter,但选择是以生成所有 CRUD 命令
  5. php bin/console doctrine:schema:update --force
  6. php bin/console cache:clear
  7. 转到//localhost/symfony/web/app_dev.php/tasks,我被列入名单,工作正常。
  8. 但是如果我去localhost/symfony/web/app_dev.php/tasks/new或者点击生成的按钮,我会得到上面提到的错误。

错误消息对我来说是希腊语,尽管它尽最大努力保持礼貌。我可以看到 Entity 下有一个 Tasks.php 文件,它定义了“Tasks”类,TasksController 设置为use AppBundle\Entity\Tasks,所以我不知道为什么它不能在我对这一切的有限理解下工作。

我正在尝试构建一个相当简单的任务管理应用程序,但对 Symfony 来说是全新的,并且开始时没有扎实的 PHP 背景。有人可以解释一下我在这个过程中可能出错的地方吗?

【问题讨论】:

  • 错误信息是寻找一个名为Task而不是Tasks的类。因此,请检查您的控制器是否有新的 Task() 行。是的,一旦你的工作正常,然后将 Tasks 重命名为 Task 并省去一些麻烦。
  • @Cerad 谢谢。就是这样!我有一个复数类名

标签: php doctrine symfony crud


【解决方案1】:

检查事项:

  • 文件名Task.php与类名class Task相同。注意:一个类不应该是复数,所以Task是对的,Tasks是错的
  • Controller 命名空间和类声明之间有一个 use AppBundle\Entity\Task;

为避免此错误,您可以使用 PHP IDE(如 Phpstorm(或其他)),当您忘记添加 use 语句时,它会以彩色显示您的语句。它还会自动添加它:D

【讨论】:

  • 非常感谢!终于有机会研究这个问题并搞砸了,这确实是问题所在。为了将来参考,有“信号任务”而不是“任务”是强制 PHP 约定还是强制 Symphony 约定?只是好奇学习。
  • @chris98.5 两者都不是强制的。要么工作。沿着这条线的某个地方你不一致。
猜你喜欢
  • 2018-09-03
  • 2020-02-27
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 2016-03-25
相关资源
最近更新 更多