【问题标题】:Class '\User' not found找不到类“\用户”
【发布时间】:2014-07-17 06:36:04
【问题描述】:

我正在尝试将我的所有用户代码移动到它自己的包中,以便在多个项目中使用,一切正常,除了当我尝试登录时,我收到以下错误:

Class '\User' not found

现在,我假设这是因为由于某种原因它没有找到用户模型(我使用的是 Laravel 附带的默认模型,但只是移到了

'Vendor/VendorName/PackageName/src/models'

我可以看到我可以从 app/config/auth.php 引用用户模型,但如果我将其更改为我的包命名空间,我会看到相同的错误,但路径不同,而且,我不认为这是最好的方法,因为我需要为每个项目设置 app/config/auth.php 模型,这可能会很痛苦,尤其是当我忘记事情的时候!

【问题讨论】:

  • 错误信息中类名的开头真的有“\”吗?这看起来......可疑。
  • 是的,我很确定这是标准配置,因为 config/auth.php 文件只是“用户”,所以看起来 Laravel 正在添加 /
  • 这意味着它正在全局命名空间中寻找User。您需要添加适当的use 声明
  • 正如我提到的 / 是由 Laravel 添加的,我认为。我应该把这个使用声明放在哪里?我已经在我的 UserController 中尝试过,但这不起作用。
  • 如果你把它移到 'Vendor/VendorName/PackageName/src/' 你必须确保作曲家注册它来自动加载,显示你的作曲家文件

标签: php laravel laravel-4 composer-php


【解决方案1】:

我的猜测是你没有自动加载用户。下面是 Laravel 如何在 composer 中使用自动加载的示例,用户类在安装时放置在“app/models”中,在那里自动加载。如果您将用户移动到其他任何地方,您需要从那里自动加载它。

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models", // original path for User.php
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "your/new/path" // here you add your new path that should autoload
    ]
}

并且不要忘记在更新您的 composer.json 文件后运行composer dump-autoload

【讨论】:

  • 对不起,但这似乎也不起作用,这是我的 composer.json 行:“vendor/seriousjelly/user/src/models/User.php”,我也尝试过使用模型文件夹的路径。我仍然遇到同样的问题:(
  • 添加一个新的vendor/... 路径解决了我的问题,只是好奇这是否是最佳做法,因为所有库都包含在此处的app 文件夹中
  • @TheRabbitFactory 很抱歉回答得很晚,一定错过了您的评论。不管怎样,你确定在更新你的 composer.json 后运行 composer dumpautoload 吗?
  • @ulkas 好吧,如果不查看您的代码,很难说出最佳实践。但请确保您只加载必要的文件,而不是整个供应商目录。
猜你喜欢
  • 2015-08-26
  • 2013-03-25
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多