Laravel 5 和 Illuminate/html

Posted

技术标签:

【中文标题】Laravel 5 和 Illuminate/html【英文标题】:Laravel 5 and Illuminate/html 【发布时间】:2015-10-09 19:43:30 【问题描述】:

我试图在我的项目中使用 html ,但是我遇到了几个错误。我在互联网上研究了这个问题,我相信我正在采取正确的步骤,但是,当我尝试加载我的母版页时,我总是遇到同样的错误。

FatalErrorException in ... 第 9 行:找不到类“HTML”

所以我做的是:

编辑composer.json文件并在require 下添加"illuminate/html": "5.*"

运行composer update(一切正常)

添加: providers => 'Illuminate\Html\HtmlServiceProvider', 以及

`aliasses => 
'Form'      => 'Illuminate\Html\FormFacade',
'Html'      => 'Illuminate\Html\HtmlFacade',

(即使已经放置在别名和提供程序下的那些如下,我添加的那些看起来与其他的看起来完全不同:

    Illuminate\Validation\ValidationServiceProvider::class,
    Illuminate\View\ViewServiceProvider::class,
    'Illuminate\Html\HtmlServiceProvider', // The one I added

   'URL'       => Illuminate\Support\Facades\URL::class,
    'Validator' => Illuminate\Support\Facades\Validator::class,
    'View'      => Illuminate\Support\Facades\View::class,
    'Form'      => 'Illuminate\Html\FormFacade', // I added
    'Html'      => 'Illuminate\Html\HtmlFacade', // I added

这是我的master.blade.php 的 sn-p 版本:

    <!DOCTYPE html>
    <html lang="en">
    <head>

        <meta charset = "UTF-8">

        <title></title>

         HTML::script('js/jquery.js')       // Line 9
         HTML::script('js/bootstrap.js')    // Line 10
         HTML::style('css/bootstrap.js')    // Line 11

    </head>

我得到的错误是:

### 第 9 行中的 FatalErrorException: 找不到类“HTML” 在

/Applications/MAMP/htdocs/laratest/storage/framework/views/### 第 9 行


我受益于一些教程,例如 This one on YouTube 和 Laracast。我还发现了 Solved-tagged question,它正在解决相同的问题,但在我的情况下没有解决问题。

编辑:更改为 !! HTML !! 也不起作用

【问题讨论】:

我不认为这是您的确切问题,但您将外观别名为Html,但将其寻址为HTML。更重要的是(它仍然可能无法解决您的问题)您应该升级到由社区主导的Illumination/html 包的延续:laravelcollective/html 在代码中引用 html/HTML 时检查区分大小写的一致性(发生在我身上,是解决方法) 当我尝试 Html:.... 时,我最终收到错误:1) Manager.php 第 137 行中的 ErrorException:call_user_func_array() 期望参数 1 是一个有效的回调,类 'Illuminate\ Auth\Guard' 没有方法“用户名”(查看:/Applications/MAMP/htdocs/laratest/resources/views/master.blade.php) 2) Manager.php 第 137 行中的 ErrorException : call_user_func_array() 期望参数 1 是一个有效的回调,类 'Illuminate\Auth\Guard' 没有方法 'username' 正如我所说,尝试将您的软件包更改为社区驱动的软件包(laravel 集体)-Illuminate/html 仅适用于 5.0,因此如果您使用的是 5.1,则无论如何都应该升级。 @alexrussell,所以你建议我删除我在 config>app.php (illuminate/html) 中添加的这 3 行,以及从 composer.json 中删除Illuminate/html;然后 composer install laravelcollective/html ? 【参考方案1】:

在迁移到 5.1 时,我发现了同样的问题 - HTML 类似乎不再支持脚本和样式方法。

改为:

 URL::asset('yourassetpath') 

【讨论】:

【参考方案2】:

试试这个:

!! HTML !!

还有,别忘了composer dumpautoload

看看,如果这有帮助。

【讨论】:

是的,我试过 !! HTML !! 。刚刚编辑了OP。抱歉写了!! HTML !【参考方案3】:

您对同一个外观使用了两个不同的别名。正确的立面是

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

这应该可以工作

附言从 laravel 5.1 开始,您应该使用 facadeName::class

【讨论】:

他试过这个:!! HTML ! 这是错误的。仔细看看。 @GauravDave,@elibyy。我试过了 !! HTML !!。我很抱歉误点击 OP。我刚刚编辑了它。我现在也尝试了:'Form' =&gt; Illuminate\Html\HtmlFacade::class,'Html' =&gt; Illuminate\Html\HtmlFacade::class, ,正如你所说,但仍然是同样的错误。 注意我写的是 Html 而不是 HTML 尝试在它们之间进行更改,因为 AFAIK 它区分大小写【参考方案4】:

首先,立面不正确。

'Form'      => 'Illuminate\Html\FormFacade', // FormFacade not HtmlFacade
'Html'      => 'Illuminate\Html\HtmlFacade',

门面是Html 而不是HTML

<!-- This won't work -->
!! HTML::script('js/jquery.js') !!

<!-- This should work -->
!! Html::script('js/jquery.js') !!

或者您可以将外观键更改为HTML,然后您可以使用HTML::script(...)

'HTML'      => 'Illuminate\Html\HtmlFacade'

【讨论】:

我纠正了你所展示的一切。但是,这一次,我在 2 个标题下遇到了一堆错误。 1) Manager.php 第 137 行中的 ErrorException: call_user_func_array() 期望参数 1 是有效的回调,类 ' Illuminate\Auth\Guard' 没有方法 'username' 2) Manager.php 第 137 行中的 ErrorException:call_user_func_array() 期望参数 1 是有效的回调,类“Illuminate\Auth\Guard”没有方法“用户名”(查看:/Applications/MAMP/htdocs/laratest/resources/views/master.blade.php) 刀片模板中是否有这样的内容:Auth::username()?【参考方案5】:

Illuminate/HTML 包已被弃用

使用:laravelcollective/html

composer require laravelcollective/html

在 config/app.php 中添加这一行

在提供者组中:

Collective\Html\HtmlServiceProvider::class,

在别名组中:

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

【讨论】:

以上是关于Laravel 5 和 Illuminate/html的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 proengsoft/laravel-jsvalidation 和 Laravel 5 验证数组输入

Laravel 5.2 - 使用 composer 和 git bash 安装 laravel 时出错

通过composer和windows 10安装Laravel 5.6之后显示5.5.32 [重复]

LARAVEL 5.3,获取用户名和角色名(使用 Laravel 模型关系)

如何在 Laravel 5.7 和 Laravel Collective 中使用动作 [重复]

使用 Laravel 5.3 和 AngularJS 1.5 的路线行为不端