【问题标题】:Laravel 5.1: Class html does not existLaravel 5.1:类 html 不存在
【发布时间】:2015-09-29 17:59:21
【问题描述】:

我正在从 4.2 直接升级到 5.1,但遇到了 Html 和 Form 类的问题。

我按照升级说明做了

  • 在 composer.json 中添加 "laravelcollective/html": "~5.0"
  • 作曲家更新
  • 将 Collective\Html\HtmlServiceProvider::class 添加到 app.php 中的提供程序
  • 添加 Form' => Collective\Html\FormFacade::class, Html' => Collective\Html\HtmlFacade::class 到 app.php 中的别名

但我的观点不起作用。我在使用 HTML::router 时得到 Class HTML does not exist 或在使用 link_to_route 时得到 Class html does not exist

我也试过Illuminate\html而不是laravelcollective,我做了一个composer dump-autoload

完整的错误:

ErrorException in Container.php line 736: Class html does not exist (View: C:\Dev\www\admin\resources\views\clubs\index.blade.php)
ReflectionException in Container.php line 736: Class html does not exist

我错过了什么?


我尝试了每个人的答案,但由于某种原因,没有一个对我有用。最终我创建了一个全新的 laravel 应用程序,复制了我的代码,然后它开始工作,所以虽然解决了实际问题仍然是个谜。

【问题讨论】:

  • 请问您的刀片变量之一是什么样的? {{!! Html.... !!}{{ Html.... }}?
  • 我尝试了各种,{{ }} 和 {!! !}} 我尝试了 Html、HTML 和 html,但没有任何效果。我正在考虑完全重新安装 laravel 并从头开始工作。
  • 更新:我不得不将所有内容恢复到 laravel 5.0,因为我的新服务器的 PHP 版本无法运行 5.1。当当。

标签: php html laravel exception upgrade


【解决方案1】:

编辑config/app.php

将此添加到 providers

Collective\Html\HtmlServiceProvider::class,

这变成了别名

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

【讨论】:

    【解决方案2】:

    试试看

    php 工匠缓存:清除

    php artisan clear-compiled

    【讨论】:

      【解决方案3】:

      我想我已经找到了解决办法。

      在你的app.php你已经声明了

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

      在您的 View 中,您调用了与

      相同的类
      {!! HTML::style('css/bootstrap.min.css') !!}
      

      与上面标记的答案一样,这些包没有任何问题,而是HTML 一词的大小写与之前的文档版本 5.0.* 不同。

      应该是

      'Form'      => Illuminate\Html\FormFacade::class,
      'HTML'      => Illuminate\Html\HtmlFacade::class,
      

      【讨论】:

      • 我尝试了所有大小写,大写,小写,标题大小写,你说的。他们都是一致的。他们都没有工作。 使用相同的代码重新安装后,它工作了。请参阅我自己的答案。
      • 如果包有问题,重新安装包的时候也会出现同样的错误,因为源代码没有改变。
      【解决方案4】:

      请从此更改您的刀片文件

      {{ HTML::style('css/bootstrap.min.css') }}
      

      {{ Html::style('css/bootstrap.min.css') }}
      

      它正在工作。

      【讨论】:

      • 谢谢,但是为什么呢?门面别名不区分大小写吗??
      【解决方案5】:

      这是正确的方法 如果你尝试在全新的 Laravel 5 安装中使用 Form::open() 或任何 Form 方法,你会得到如下信息: http://laraveldaily.com/class-form-not-found-in-laravel-5/

      【讨论】:

        【解决方案6】:

        我的解决方案是区分大小写的类名。

        In my config/app.php (in aliases)
        'Form'      => Collective\Html\FormFacade::class,
        'Html'      => Collective\Html\HtmlFacade::class,
        

        我尝试在查看此代码时使用:

        {!! HTML::mailto('mailto:example@example.com', 'example@example.com'); !!}
        

        这是一个错误:

        "FatalErrorException in ccf70b1d0b9930d6c4e8f3859fff448f line 11: Class 'HTML' not found"
        

        “HTML”类的名称区分大小写。您应该在配置 (config/app.php) 文件中使用“Html”。

        希望这对某些人有所帮助。

        【讨论】:

        • 我修复了那个..'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class,
        【解决方案7】:

        作曲家更新后的简单重启对我来说非常有效。我一直在寻找答案,却被困在了同一个位置。我建议,运行 config:cache 和 cache:clear 并重新启动 IDE。它会起作用的。

        【讨论】:

          【解决方案8】:

          我的问题解决了,但实际原因还不清楚。我创建了一个全新的 laravel 安装并复制了我的源代码(全部)。新应用程序立即运行(在安装了Illuminant/html 之后)。

          所以你认为我在包方面做错了什么?这就是我的想法,然后我对这两个目录进行了比较,结果发现它们是相同的。所以这是一个真正的谜。

          所以,现在一切正常,我只是重命名了我的新应用程序并可以继续。

          我确实知道在某些时候我可能同时安装了 HTML 包的集体和照明版本。这很可能破坏了一切。

          【讨论】:

          • 我为此使用了 laravel 5.1 ..follow this link laravelcollective.com/docs/5.1/html..Now It's Working My Html Tag not found 问题解决
          • 没有人解决我的问题,最后我自己解决了,我只得到一票,这不是很好笑吗?哈哈
          【解决方案9】:

          在 composer.json 中添加

           "illuminate/html": "5.*"
          

          并运行作曲家更新

          打开你的 config/app.php

          在“提供者”下添加

          Illuminate\Html\HtmlServiceProvider::class,
          

          在“别名”下添加

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

          在你的刀片模板下,这样使用

          {!! HTML::style('assets/css/flatten.css') !!}
          

          【讨论】:

          • 原因是在 L5 中 HTML 和 Form 函数是框架的可选部分。他们默认不包含它,因为越来越多的人在客户端完成所有模板。
          • @Zuko 我安装了laravelcollective.com/docs/5.1/html,它是从Illuminate/html 衍生出来的,所以它是一回事。有关更多信息,请参阅我的新答案。
          • @MichielvanderBlonk 官方的 Illuminate/Html 不再维护了吗?我认为它会是,只是默认情况下不包含在框架中。
          • @Zuko 不,不是。就在这时,发生了一件更奇怪的事情。我做了一个“作曲家更新”,它自动用 laravelcollective/html 替换了我的照明/html。哦,请注意,我现在看到它只是一个依赖项。
          • 在 laravel 5.1 中,您的所有解释都是正确的,但在视图中,HTML::style 未定义。但是Html::style 起作用了。谢谢。
          猜你喜欢
          • 2016-02-24
          • 2016-03-09
          • 2016-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-28
          • 1970-01-01
          相关资源
          最近更新 更多