【问题标题】:Laravel ERROR: Class 'Collective\Html\HtmlServiceProvider' not found after running composer require laravelcollective/html in CMDLaravel 错误:在 CMD 中运行 composer 后找不到类“Collective\Html\HtmlServiceProvider”需要 laravelcollective/html
【发布时间】:2017-03-26 12:28:42
【问题描述】:

注意:到目前为止,this thread 没有任何回答对我有帮助。而且,我认为 4 多个小时徒劳地寻找解决方案最终证明我可以寻求进一步的帮助...

我关注this tutorial 是为了在我的 Laravel 项目中使用表单并允许我将一些用户输入保存在我的数据库中。按照指示,我通过 CMD 执行了这一行:

composer require "laravelcollective/html":"^5.3.0"

然后,我在 config/app.php 中添加了这些:

'providers' => [
// ...
  Collective\Html\HtmlServiceProvider::class,
// ...
],

'aliases' => [
// ...
  'Form' => Collective\Html\FormFacade::class,
  'Html' => Collective\Html\HtmlFacade::class,
// ...
],

在我的视图中,我有这个,只是为了检查现在是否所有东西都可以使用了:

{!! Form::open([]) !!}
{!! Form::text('name', @$name) !!}
{!! Form::password('password') !!}
{!! Form::submit('Send') !!}
{!! Form::close() !!}

但是,它给了我这个错误:

ProviderRepository.php 第 146 行中的 FatalThrowableError: 找不到类“Collective\Html\HtmlServiceProvider”

我什至将它添加到 我的 composer.json 中,以防万一这可能是“缺失的成分”:

"require": {
    "laravel/framework": "5.0.*",
    "laravelcollective/html": "~5.0"
}

但它也没有解决任何问题。

还请注意,我发现了两个 composer.json 文件:一个在里面...

C:\xampp\htdocs\laravelproject

还有一个里面...

C:\xampp\htdocs\laravelproject\project

...所以我都编辑了。

旁注:“项目”文件夹是可以找到“原始”根文件的位置(例如文件夹应用程序、配置、资源等。我之前已重新定位它们以便从我的网址中删除“公开”一词。

PS:我对 Laravel、Composer 和 CMD 很陌生。我唯一的背景是 PHP 和 CodeIgniter。

请帮忙。

我不确定是否应该在运行 composer require "laravelcollective/html":"^5.3.0" 后在此处提供 CMD 结果(因为它有 142 行长),但我有一份副本,以防万一。

【问题讨论】:

  • 你能验证laravelcollective/html 包是否存在于你的vendor/ 目录中吗?如果是这样,运行composer dump-autoload 并查看错误是否仍然存在。
  • 是的,在vendor 文件夹内,有一个名为laravelcollective 的文件夹,里面有html 文件夹。我再次执行composer dump-autoload,它只是返回“生成自动加载文件”。仅此而已。
  • 我添加了一个答案。见下文。

标签: php laravel laravel-5.3 laravel-form


【解决方案1】:

显然,Laravel 的 Illuminate/Foundation/ProviderRepository.php 正在唠叨未找到的提供者:

138     /**
139      * Create a new provider instance.
140      *
141      * @param  string  $provider
142      * @return \Illuminate\Support\ServiceProvider
143      */
144     public function createProvider($provider)
145     {
146         return new $provider($this->app);
147     }

我刚刚在全新安装的 Laravel 5.3 上成功测试了它。遵循这个清单:

  1. 问题composer require "laravelcollective/html":"^5.3.0"
  2. 验证vendor/laravelcollective/html 目录是否存在。
  3. 验证您的composer.json 文件是否已更新,并且您的依赖项(require 块)中有laravelcollective/html 包的条目。
  4. Collective\Html\HtmlServiceProvider::class 添加到您的providers 数组config/app.php
  5. 'Form' => Collective\Html\FormFacade::class'Html' => Collective\Html\HtmlFacade::class 添加到您的aliases 数组中。
  6. 确认 API 存在:发出php artisan tinker 命令并尝试使用Form:: API。看看是否抛出任何错误。

您可能已经完成了所有这些步骤。如果是这种情况,只需使用composer remove laravelcollective/html 命令删除包并重新执行所有步骤。

最重要的是,了解您的项目文件所在的位置。摆脱多余的project/

【讨论】:

  • 谢谢。我会尝试重做一切。至于额外的project/ 文件夹,我有它,这样我的 URL 中就不会包含“public”这个词。如果有另一种方法可以在不使用额外文件夹的情况下摆脱“公共”,那就太好了。
  • 哦,当然有办法。您必须将 Web 文档根目录设置为 public/ 而不是项目根目录。当您使用 Xampp 时,您需要创建一个指向您的 public/ 目录的 VirtualHost。以下是如何做到这一点的指南:delanomaloney.com/2013/07/10/…
  • 另外,你可能想考虑使用 Laravel 自己的 Valet for windows:github.com/vitr/valet4windows
  • 更新:我在一个新的 Laravel 项目中尝试了这些步骤,并且它正在工作。我不确定,但我认为我的额外 project 文件夹被包含在该错误中。我现在正在按照有关创建 XAMPP VirtualHost 的教程来删除我的 url 中的 public 字,而无需创建额外的文件夹。
  • 几秒钟。 tinker 命令启动你的 laravel 应用程序并为你提供一个 shell 接口来与之交互。如果加载需要这么长时间,则说明您的应用启动过程有问题。
猜你喜欢
  • 1970-01-01
  • 2018-11-08
  • 2015-12-24
  • 2015-11-23
  • 2016-02-17
  • 2017-07-07
  • 2015-10-31
  • 2016-07-16
  • 2015-04-16
相关资源
最近更新 更多