类 'Illuminate\Html\HtmlServiceProvider' 未找到 Laravel 5

30

我正在尝试在Laravel 5中添加HtmlServiceProvider。

我一直收到以下错误:

在compiled.php的第6391行致命错误: 找不到类'Illuminate\Html\HtmlServiceProvider'

这是我的提供程序的样子:

'providers' => [

    /*
     * Laravel Framework Service Providers...
     */
    'Illuminate\Foundation\Providers\ArtisanServiceProvider',
    'Illuminate\Auth\AuthServiceProvider',
    'Illuminate\Bus\BusServiceProvider',
    'Illuminate\Cache\CacheServiceProvider',
    'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
    'Illuminate\Routing\ControllerServiceProvider',
    'Illuminate\Cookie\CookieServiceProvider',
    'Illuminate\Database\DatabaseServiceProvider',
    'Illuminate\Encryption\EncryptionServiceProvider',
    'Illuminate\Filesystem\FilesystemServiceProvider',
    'Illuminate\Foundation\Providers\FoundationServiceProvider',
    'Illuminate\Hashing\HashServiceProvider',
    'Illuminate\Mail\MailServiceProvider',
    'Illuminate\Pagination\PaginationServiceProvider',
    'Illuminate\Pipeline\PipelineServiceProvider',
    'Illuminate\Queue\QueueServiceProvider',
    'Illuminate\Redis\RedisServiceProvider',
    'Illuminate\Auth\Passwords\PasswordResetServiceProvider',
    'Illuminate\Session\SessionServiceProvider',
    'Illuminate\Translation\TranslationServiceProvider',
    'Illuminate\Validation\ValidationServiceProvider',
    'Illuminate\View\ViewServiceProvider',
    'Illuminate\Html\HtmlServiceProvider',

    /*
     * Application Service Providers...
     */
    'App\Providers\AppServiceProvider',
    'App\Providers\BusServiceProvider',
    'App\Providers\ConfigServiceProvider',
    'App\Providers\EventServiceProvider',
    'App\Providers\RouteServiceProvider',

],

这是我的 app.php 文件中别名的样子:

'aliases' => [

    'App'       => 'Illuminate\Support\Facades\App',
    'Artisan'   => 'Illuminate\Support\Facades\Artisan',
    'Auth'      => 'Illuminate\Support\Facades\Auth',
    'Blade'     => 'Illuminate\Support\Facades\Blade',
    'Bus'       => 'Illuminate\Support\Facades\Bus',
    'Cache'     => 'Illuminate\Support\Facades\Cache',
    'Config'    => 'Illuminate\Support\Facades\Config',
    'Cookie'    => 'Illuminate\Support\Facades\Cookie',
    'Crypt'     => 'Illuminate\Support\Facades\Crypt',
    'DB'        => 'Illuminate\Support\Facades\DB',
    'Eloquent'  => 'Illuminate\Database\Eloquent\Model',
    'Event'     => 'Illuminate\Support\Facades\Event',
    'File'      => 'Illuminate\Support\Facades\File',
    'Hash'      => 'Illuminate\Support\Facades\Hash',
    'Input'     => 'Illuminate\Support\Facades\Input',
    'Inspiring' => 'Illuminate\Foundation\Inspiring',
    'Lang'      => 'Illuminate\Support\Facades\Lang',
    'Log'       => 'Illuminate\Support\Facades\Log',
    'Mail'      => 'Illuminate\Support\Facades\Mail',
    'Password'  => 'Illuminate\Support\Facades\Password',
    'Queue'     => 'Illuminate\Support\Facades\Queue',
    'Redirect'  => 'Illuminate\Support\Facades\Redirect',
    'Redis'     => 'Illuminate\Support\Facades\Redis',
    'Request'   => 'Illuminate\Support\Facades\Request',
    'Response'  => 'Illuminate\Support\Facades\Response',
    'Route'     => 'Illuminate\Support\Facades\Route',
    'Schema'    => 'Illuminate\Support\Facades\Schema',
    'Session'   => 'Illuminate\Support\Facades\Session',
    'Storage'   => 'Illuminate\Support\Facades\Storage',
    'URL'       => 'Illuminate\Support\Facades\URL',
    'Validator' => 'Illuminate\Support\Facades\Validator',
    'View'      => 'Illuminate\Support\Facades\View',
    'Form'      => 'Illuminate\Html\FormFacade',
    'Html'      => 'Illuminate\Html\HtmlFacade',

],

最后我已经将这个添加到了我的composer.json文件中

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

一些我总是遇到这个错误,所以希望有人能帮助我解决一下 :)
提前感谢!

3
你在将其添加到composer.json文件后是否运行过composer update命令? - lukasgeiter
1
感谢您的评论,我仔细检查了一下,发现我一直在错误的Homestead项目文件夹中执行composer update!现在已经解决了 :) - kazehaya
4
illuminate/html 已经被弃用。有一个名为 Laravel Collective 的社区项目可供使用。更多信息请参考:https://laravel-news.com/2015/02/new-community-project-laravel-collective/ - user2094178
在自动化部署方面,这是一个大问题,有人有解决方案吗? - tread
@surfer190 不是这样的。部署应该使用 composer install 而不是 composer update,以安装在 composer.lock 中指定的确切版本。没有预安装命令脚本,因此 install 不会尝试加载配置文件。现在,在这种特定情况下,如果包名/命名空间已更改,则应在部署之前捕获... - andrewtweber
11个回答

42

首先将此行添加到 composer.json 文件中

"illuminate/html": "~5.0"

然后运行 composer update 命令。等待更新完成后,打开config/app.php文件并添加以下内容:

'Illuminate\Html\HtmlServiceProvider', 

添加到providers数组中,以及这个:

'Form'      => 'Illuminate\Html\FormFacade',
'Html'      => 'Illuminate\Html\HtmlFacade',
aliases数组中添加内容,并且在blade或其他地方使用Html时,请使用小写的'Html'而不是HTML。
这里是一个参考链接:http://thegeekyland.blogspot.com/2015/11/class-illuminatehtmlhtmlserviceprovider.html

5
请注意,正如这个答案所说,您需要先添加composer.json的一行代码,然后执行更新操作,最后再添加到app.php中。您不能将这两个步骤合并在一起,否则它将不起作用。 - Rob Cranfill
1
请注意,现在已经弃用了Illuminate包,因此请使用laravelcollective/html包作为答案。 - tristanbailey

30

Illuminate\Html\HtmlServiceProvider不再是核心元素。已从核心框架中删除的Laravel组件可在laravelcollective.com上找到,您可以在此处找到html和表单组件:

http://laravelcollective.com/docs/5.0/html

将此添加到您的composer.json文件中:

"laravelcollective/html": "~5.0"

然后更新 Composer:

composer update

然后在 config/app.php 中添加提供者

'Collective\Html\HtmlServiceProvider',

最后,在同一文件中添加两个别名:

'Form' => 'Collective\Html\FormFacade',
'Html' => 'Collective\Html\HtmlFacade',

14

Illuminate/HTML包已被弃用。

请使用:laravelcollective/html

https://stackoverflow.com/a/34991188/3327198

composer require laravelcollective/html
在config/app.php文件中,将以下代码添加到providers组中:
Collective\Html\HtmlServiceProvider::class,

在别名组中:

'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,

3

请尝试以下步骤: 编辑项目的composer.json文件。

"require": {
"laravelcollective/html": "~5.0"

接下来,从终端更新Composer:

composer update

然后,在config/app.php的providers数组中添加新的提供程序:

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

最后,在config/app.php的aliases数组中添加两个类别名:

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

],


这是一个很好的答案,我认为你应该评价上面给出的正确答案,而不是试图得到自己的答案,因为它不如Arlind的更精确。 - blakroku

1
我发现了这个问题的另一个原因:
在 ../Vendor 目录中有时会出现一个名为 "config.php" 的文件,要么彻底删除该文件,要么在其中找到类似于以下行的内容:
array (
  ...
  28 => 'Illuminate\Html\HtmlServiceProvider',
  ...
),

删除该行,然后执行“composer update”命令,这将有所帮助(这也对我有用)。

我简直不敢相信我是第一个点赞这个答案的人。在我的情况下,我已经从 Illuminate 版本切换到 LaravelCollective 版本,但在部署到我的测试环境时仍然遇到了问题。解决方法是 rm boostrap/cache/*,这只会删除 config.php 和 services.json。由于某种原因,即使我已经删除了所有旧版本的引用并成功运行了 composer update,artisan clear-compiled 仍然失败。删除 boostrap/cache 中这两个文件解决了问题。 - JamesG
他们对这个答案不感兴趣,因为Illuminate\Html已经从Laravel核心中删除了。感谢您的点赞。 - gildniy

1
您也可以像这样使用
Illuminate\Html\HtmlServiceProvider::class,,并且
'Form'      => Illuminate\Html\FormFacade::class,
'Html'      => Illuminate\Html\HtmlFacade::class,

那个::class的添加有什么意义?我注意到在Laravel的最近六个月中发生了这种变化。 - Alexander Kleinhans
1
这将返回类名。如果使用此类名,则不再是硬编码。 - Md Sirajus Salayhin

0

-1

在命令提示符中运行此命令

php artisan  Illuminate\Html 

然后在app.php中添加变量


-1
错误提示表明找不到服务提供者,请确保您进行了composer update。如果您已经执行了composer update,请检查您的vendor文件夹以确保它已经拉取了依赖项。

-1

在更新composer时,请仔细检查您所在的目录是否正确。


这真的很傻,但那是我的问题 :-P 我无法想象这样的事情会发生在我身上 :) - balping

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接