2015-12-22 3 views
12

Ich verwende Laravel 5.2 und ich bin immer Fehler folgende FatalErrorException in HtmlServiceProvider.php Linie 36: Call to undefined Methode Illuminate \ Foundation \ Application :: bindShared()FatalErrorException in HtmlServiceProvider.php Linie 36: Laravel

meine app.php Datei ist

<?php 

return [ 


    'env' => env('APP_ENV', 'production'), 


    'debug' => env('APP_DEBUG', false), 


    'url' => 'http://localhost', 


    'timezone' => 'UTC', 


    'locale' => 'en', 


    'fallback_locale' => 'en', 


    'key' => env('APP_KEY'), 

    'cipher' => 'AES-256-CBC', 


    'log' => env('APP_LOG', 'single'), 


    'providers' => [ 

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

     /* 
     * Application Service Providers... 
     */ 
     App\Providers\AppServiceProvider::class, 
     App\Providers\AuthServiceProvider::class, 
     App\Providers\EventServiceProvider::class, 
     App\Providers\RouteServiceProvider::class, 

    ], 


    'aliases' => [ 

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

    ], 

]; 

Und signup_form.blade.php Datei ist

<h1>signupform</h1> 

<div class="signup-form"> 
    {!! Form::open() !!} 

    {!! Form::text('email','',array('class'=>'email','id'=>"email","placeholder"=>'Email address'))!!} 

    {!! Form::close() !!} 

</div> 

Und meine routes.php Datei

Immer wenn ich das Formular im Browser öffne, zeigt es den obigen Fehler an.

+0

Versuchen ' 'Illuminate zu ersetzen \ Html \ HtmlServiceProvider'', mit' Illuminate \ Html \ HtmlServiceProvider :: CLASS', in 'app.php' – Moppo

+0

@Moppo ich es geändert, aber noch ist es denselben Fehler geben –

Antwort

19

Sie müssen entfernen:

'Illuminate\Html\HtmlServiceProvider', 

und

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

Ihr bilden `config/app.php

dann von Ihrem composer.json entfernen illuminate/html dann zu Ihrem composer.json hinzufügen:

"laravelcollective/html": "5.*" 

in require Abschnitt

dann composer install

ausgeführt und weitere Sie Anweisungen für https://laravelcollective.com/docs/5.1/html#installation folgen müssen, um dieses Paket Installation

EDIT abzuschließen ist es vielleicht nicht, weil dieser in diesem Moment arbeiten werden: https://github.com/LaravelCollective/html/issues/133 - es wird wahrscheinlich nach dem Zusammenführen dieser PR gelöst werden: https://github.com/illuminate/html/pull/31/files

+0

es funktioniert @Marcin –

+0

Danke!, Es war sehr hilfreich. :-) – Muhammad

11

Zuerst in der composer.json Datei ersetzen müssen:

"illuminate/html": "^5.0" 

mit

"laravelcollective/html":"5.2.*" 

Als nächstes müssen Sie den Komponisten vom Terminal aktualisieren, indem Sie diesen Befehl in das Terminal eingeben: composer update.

Als nächstes wird in der config/app.php Datei, ersetzen Sie das:

'Illuminate\Html\HtmlServiceProvider::class'` 

mit

'Collective\Html\HtmlServiceProvider::class' 

Als nächstes ersetzen Sie diese beiden Klassen Aliase:

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

mit

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

Schließlich müssen Sie Ihre routes.php Datei aktualisieren, indem Sie die ‚Web‘ Middleware ersetzt mit:

Route::group(['middleware' => ['web']], function() use ($router) { 
    $router->resource('blogs', 'BlogsController'); 
}); 
+0

Das hat bei mir funktioniert. Es wurde ein Tippfehler (': class' statt ':: class) korrigiert! – San

1

Der „Trick“ die für mich gearbeitet ist die oben erwähnte, weil Illuminate/HTML-Paket wurde veraltet:

Verwendung: laravelcollective/html https://stackoverflow.com/a/34991188/3327198

im Endgerät (CLI): Komponisten erfordern laravelcollective/html

Fügen Sie diese Zeilen in config/app.php IN GRUPPE PROVIDER:

Collective \ Html \ HtmlServiceProvider :: Klasse,

Aliase GROUP: 'Form' => Collective \ Html ändern den Namen aller "bindShared" Funktionen in "Singletons" im Kreditoren \ FormFacade :: Klasse, 'HTML' => Collective \ Html \ HtmlFacade :: Klasse,

+0

Dies ist die aktuellste Lösung. Danke. –

0

Dieser Trick funktionierte für mich \ belichten \ html \ HtmlServiceProvider.php Datei

Zum Beispiel: ändern

$this->app->bindShared('html', function($app) 
{ 
    return new HtmlBuilder($app['url']); 
}); 

in

$this->app->singleton('html', function($app) 
{ 
    return new HtmlBuilder($app['url']); 
});