Error loading view in Laravel 5

2019-08-12 16:40发布

问题:

I'm trying to load my create view,

public function create()
    {
        //
        return View('my.create');
    }

but I'm having this error,

FatalErrorException in 85b8c1799c6cd6f2475229a36bc0e59a39b0e295.php line 23: Class 'HTML' not found


create.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Look! I'm CRUDding</title>
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">

<nav class="navbar navbar-inverse">
    <div class="navbar-header">
        <a class="navbar-brand" href="{{ URL::to('nerds') }}">Nerd Alert</a>
    </div>
    <ul class="nav navbar-nav">
        <li><a href="{{ URL::to('nerds') }}">View All Nerds</a></li>
        <li><a href="{{ URL::to('nerds/create') }}">Create a Nerd</a>
    </ul>
</nav>

<h1>Create a Nerd</h1>

<!-- if there are creation errors, they will show here -->
{{ HTML::ul($errors->all()) }}

{{ Form::open(array('url' => 'nerds')) }}

    <div class="form-group">
        {{ Form::label('name', 'Name') }}
        {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
    </div>

    <div class="form-group">
        {{ Form::label('email', 'Email') }}
        {{ Form::email('email', Input::old('email'), array('class' => 'form-control')) }}
    </div>

    <div class="form-group">
        {{ Form::label('nerd_level', 'Nerd Level') }}
        {{ Form::select('nerd_level', array('0' => 'Select a Level', '1' => 'Sees Sunlight', '2' => 'Foosball Fanatic', '3' => 'Basement Dweller'), Input::old('nerd_level'), array('class' => 'form-control')) }}
    </div>

    {{ Form::submit('Create the Nerd!', array('class' => 'btn btn-primary')) }}

{{ Form::close() }}

</div>
</body>
</html>

the above view is located in its iwn directory called my. I'm using Laravel 5.2 in WAMP server.

回答1:

I guess you're using the "classic" (has been there for long) HTML façade in your view.

Well, it's no longer there in Laravel > 5.1 (IIRC). If you want the same functionalities, you can refer to the LaravelCollective package you can find here:

https://laravelcollective.com/docs/5.2/html

You can install it easily with Composer, as any other package. The same applies for the Form class, mind it.



回答2:

You need to create your class named 'HTML'.

You should create this class in your Controllers folder.

Example:

class HomeController extends Controller
{
public function index()
{
    return view('home');
}
}


回答3:

  1. Add these lines to your composer.json file:

    "require": {
        "laravelcollective/html": "5.2.*"
    }
    

    and run php composer update (or php.exe on Windows)

    OR simply run from terminal:

    php.exe composer require laravelcollective/html
    
  2. Next, add your new provider to the providers array of config/app.php:

    'providers' => [
        // ...
        Collective\Html\HtmlServiceProvider::class,
        // ...
    ],
    
  3. Finally, add two class aliases to the aliases array of config/app.php:

    'aliases' => [
        // ...
        'Form' => Collective\Html\FormFacade::class,
        'Html' => Collective\Html\HtmlFacade::class,
        // ...
    ],
    
  4. Consider reading a Documentation.