laravel 5: Nie znaleziono klasy „input”


114

W moim routes.phppliku mam:

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();

});

Mam formularz do rejestracji użytkowników. Biorę również wartość danych wejściowych formularza w routes.php.

Ale błąd pojawia się, gdy rejestruję użytkownika. Błąd:

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

Odpowiedzi:


275

Tak jest Inputi nie input. To zatwierdzenie usunęło Inputdefinicję fasady, config/app.phpdlatego musisz ręcznie dodać ją do aliasestablicy, jak poniżej,

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

Lub możesz importować Inputfasadę bezpośrednio zgodnie z wymaganiami,

use Illuminate\Support\Facades\Input;

A jeśli użyję laravelcollective do formularzy w laravel 5.2 i użyję {{Form}} w widoku, a nie na trasach, jak robi to Shafee. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh

2
Możesz użyć \ Input, aby uzyskać do niego dostęp globalnie
pinkal vansia

Jak lub gdzie mam to umieścić? Zmiana Input na \ Input (wewnątrz tagów formularzy) nie działa .. Również nie używam illuminate \ support \ facades .. ale"laravelcollective/html": "5.2.*"
nclsvh

Przepraszam, nie zwróciłem uwagi na twój wcześniejszy komentarz, ale w HTML możesz użyć funkcji pomocniczej old (), która jest niczym innym jak opakowaniem dla Input :: old ()
pinkal vansia

@NicolasV, możesz umieścić go w aliasesśrodku config/app.php, jak wskazuje odpowiedź Nvana .
Nik Sumeiko

28

Laravel < 5.2 :

Otwórz config/app.phpi dodaj Inputklasę do aliases:

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

Dla laravel >= 5.2

Zmień Input::naRequest::


26

Możesz dodać fasadę w swoim folder\config\app.php

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

23

W Laravel 5.2 Input :: jest zastępowane przez Request ::

posługiwać się

Request::

Dodaj na górze kontrolera lub dowolnej innej klasy

use Illuminate\Http\Request;

5

Po pierwsze, twój problem dotyczy pisowni klasy wejściowej, powinno to być Input zamiast input. I musisz zaimportować klasę z dobrą przestrzenią nazw.

use Illuminate\Support\Facades\Input;

Jeśli chcesz, aby nazywało się to „wejście”, a nie „wejście”, dodaj to:

use Illuminate\Support\Facades\Input as input;

Po drugie, jest to brudny sposób przechowywania w bazie danych przez route.php i nie przetwarzasz sprawdzania poprawności danych. Jeśli wysłany parametr nie jest zgodny z oczekiwaniami, może pojawić się błąd SQL, spowodowany typem danych. Do interakcji z informacjami i przechowywania za pośrednictwem modelu w metodzie kontrolera należy używać kontrolera.

Plik route.php obsługuje routing. Służy do tworzenia połączenia między kontrolerem a żądaną trasą.

Aby dowiedzieć się więcej o kontrolerze, oprogramowaniu pośrednim, modelu, usłudze ... http://laravel.com/docs/5.1/

Jeśli potrzebujesz więcej informacji, rozwiązania problemu możesz dołączyć do społeczności: https://laracasts.com/

Pozdrowienia.



4

Deklaracja w config / app.php pod aliasami: -

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

Lub możesz importować fasadę wejściową bezpośrednio w razie potrzeby,

use Illuminate\Support\Facades\Input;

lub

use Illuminate\Support\Facades\Input as input;


1

Ten czysty fragment kodu działa dobrze dla mnie:

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

Dodaj to w config / app.php pod aliasami: -

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


0

Zmieniło się to w laravel 6. Zobacz więcej informacji tutaj

Nie rób nic w app.php ani nigdzie indziej, po prostu zamień

input :: get () z Request :: input ()

i

na górze, gdzie deklarujesz dane wejściowe, walidator, skrót itp., usuń dane wejściowe i dodaj żądanie

użyj czegoś takiego:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.