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
Gammer
quelle

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;
Pinkal Vansia
quelle
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::

CONvid19
quelle
26

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

'Input' => Illuminate\Support\Facades\Input::class,
Nvan
quelle
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;
lewis4u
quelle
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.

Entstellen
quelle
4

Wenn Sie Laravel Version 5.2 verwenden Überprüfen Sie dies: https://laravel.com/docs/5.2/requests#accessing-the-request

use Illuminate\Http\Request;//Access able for All requests
...

class myController extends Controller{
   public function myfunction(Request $request){
     $name = $request->input('username');
   }
 }
Ferhat KOÇER
quelle
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;
Chandrakant Ganji
quelle
2

'Input' => Illuminate\Support\Facades\Input::class, füge es zu App.php hinzu.

Prakash Pokhrel
quelle
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();
});
Pradeep Sapkota
quelle
0

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

'Input' => Illuminate\Support\Facades\Input::class,
Deepak Kumar
quelle
0

Miscall of Class sollte es Inputnicht seininput

Kenneth Sonntag
quelle
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 ;

GOLDENSPARROW MOBILE
quelle