Laravel 5: Klasse 'Eingabe' nicht gefunden


114

In meiner routes.phpDatei habe ich:

Route::get('/', function () {

    return view('login');
});

Route::get('/index', function(){
    return view('index');
});

Route::get('/register', function(){
    return view('register');
});
Route::post('/register',function(){

    $user = new \App\User;
    $user->username = input::get('username');
    $user->email  = input::get('email');
    $user->password = Hash::make(input::get('username'));
    $user->designation = input::get('designation');
    $user->save();

});

Ich habe ein Formular für die Benutzerregistrierung. Ich nehme auch den Formulareingabewert in der routes.php.

Der Fehler tritt jedoch auf, wenn ich einen Benutzer registriere. Error:

FatalErrorException in routes.php line 61:
Class 'input' not found

Antworten:


274

Es ist Inputund nicht input. Durch dieses Commit wurde die InputFassadendefinition entfernt, config/app.phpdaher müssen Sie diese manuell wie folgt zum aliasesArray hinzufügen.

'Input' => Illuminate\Support\Facades\Input::class,

Oder Sie können die InputFassade nach Bedarf direkt importieren .

use Illuminate\Support\Facades\Input;

Was ist, wenn ich laravelcollective für die Formulare in laravel 5.2 verwende und {{Form}} in einer Ansicht verwende, nicht in Routen wie Shafee. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh

2
Sie können \ Input verwenden, um global
darauf zuzugreifen

Wie oder wo muss ich das platzieren? Das Ändern der Eingabe in \ Eingabe (innerhalb der Formular-Tags) funktioniert nicht. Außerdem verwende ich nicht illuminate \ support \ "laravelcollective/html": "5.2.*"
facades

Entschuldigung, ich habe Ihren früheren Kommentar nicht beachtet, aber in HTML können Sie die
Hilfsfunktion

@NicolasV du kannst es aliasesdrinnen ablegenconfig/app.php , wie Nvans Antwort zeigt .
Nik Sumeiko

28

Für Laravel < 5.2 :

Öffnen config/app.phpSie die InputKlasse und fügen Sie sie hinzu aliases:

'aliases' => [
// ...
  'Input' => Illuminate\Support\Facades\Input::class,
// ...
],

Für Laravel >= 5.2

Wechseln Sie Input::zuRequest::


26

Sie können eine Fassade in Ihre hinzufügen folder\config\app.php

'Input' => Illuminate\Support\Facades\Input::class,

23

In Laravel 5.2 wird Input :: durch Request :: ersetzt.

verwenden

Request::

Zum oberen Rand des Controllers oder einer anderen Klasse hinzufügen

use Illuminate\Http\Request;

5

Zunächst geht es bei Ihrem Problem um die Schreibweise der Eingabeklasse, sollte Eingabe statt Eingabe sein. Und Sie müssen die Klasse mit dem guten Namespace importieren.

use Illuminate\Support\Facades\Input;

Wenn Sie möchten, dass es "Eingabe" und nicht "Eingabe" heißt, fügen Sie Folgendes hinzu:

use Illuminate\Support\Facades\Input as input;

Zweitens ist es eine schmutzige Art, über route.php in der Datenbank zu speichern, und Sie verarbeiten keine Datenüberprüfung. Wenn ein gesendeter Parameter nicht Ihren Erwartungen entspricht, wird möglicherweise ein SQL-Fehler angezeigt, der durch den Datentyp verursacht wird. Sie sollten den Controller verwenden, um mit Informationen zu interagieren und über das Modell in der Controller-Methode zu speichern.

Die Datei route.php verwaltet das Routing. Es soll die Verbindung zwischen dem Controller und der angeforderten Route herstellen.

Erfahren Sie mehr über Controller, Middleware, Modell, Service ... http://laravel.com/docs/5.1/

Wenn Sie weitere Informationen benötigen, können Sie der Community beitreten: https://laracasts.com/

Grüße.



4

Erklärung in config / app.php unter Aliasnamen: -

'Input' => Illuminate\Support\Facades\Input::class,

Oder Sie können die Eingabefassade nach Bedarf direkt importieren.

use Illuminate\Support\Facades\Input;

oder

use Illuminate\Support\Facades\Input as input;


1

Dieses saubere Code-Snippet funktioniert gut für mich:

use Illuminate\Http\Request;
Route::post('/register',function(Request $request){

   $user = new \App\User;
   $user->username = $request->input('username');
   $user->email  = $request->input('email');
   $user->password = Hash::make($request->input('username'));
   $user->designation = $request->input('designation');
   $user->save();
});

0

Fügen Sie dies in config / app.php unter Aliasnamen hinzu: -

'Input' => Illuminate\Support\Facades\Input::class,


0

Es wurde in Laravel 6 geändert. Weitere Informationen finden Sie hier

Mach nichts in app.php und anderswo, ersetze es einfach

input :: get () mit Request :: input ()

und

Entfernen Sie oben, wo Sie Input, Validator, Hash usw. deklarieren, Input und fügen Sie Request hinzu

benutze so etwas wie:

Config, DB, File, Hash, Input , Redirect, Session, View, Validator, Request ;

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.