laravel 5: Клас "input" не знайдено


114

У своєму routes.phpфайлі я маю:

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

});

У мене форма для реєстрації користувачів. Я також приймаю значення входів форми в routes.php.

Але помилка виникає, коли я реєструю користувача. Помилка:

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

Відповіді:


275

Це є Inputі ні input. Ця фіксація вилучила Inputвизначення фасаду, config/app.phpзвідси ви повинні вручну додати це до aliasesмасиву, як показано нижче,

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

Або ви можете імпортувати Inputфасад безпосередньо за потребою,

use Illuminate\Support\Facades\Input;

Що робити, якщо я використовую laravelcollective для форм у laravel 5.2 та використовую {{Form}} у вигляді, а не в маршрутах, як це робить Shafee. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh

2
Ви можете використовувати \ Input для доступу до нього у всьому світі
pinkal vansia

Як або де мені це потрібно поставити? Зміна Input на \ Input (всередині тегів форми) не працює .. Також я не використовую підсвічувати \ підтримку \ фасади .. але"laravelcollective/html": "5.2.*"
nclsvh

Вибачте, що я не звернув уваги на ваш попередній коментар, але в HTML ви можете використовувати функцію помічника old (), яка є не що інше, як обгортку для Input :: old ()
pinkal vansia

@NicolasV ви можете помістити його aliasesвсередину config/app.php, як вказує відповідь Нвана .
Нік Сумейко

28

Для laravel < 5.2 :

Відкрийте config/app.phpта додайте Inputклас до aliases:

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

Для laravel >= 5.2

Змінити Input::наRequest::


26

Ви можете додати фасад у свій folder\config\app.php

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

23

У Laravel 5.2 Input :: замінено на Request ::

використання

Request::

Додайте до початку контролера або будь-якого іншого класу

use Illuminate\Http\Request;

5

Спочатку ваша проблема стосується написання класу введення, а не введення. І вам доведеться імпортувати клас із хорошим простором імен.

use Illuminate\Support\Facades\Input;

Якщо ви хочете, щоб його називали "input", а не "Input", додайте це:

use Illuminate\Support\Facades\Input as input;

По-друге, це брудний спосіб зберігання в базі даних через route.php, і ви не обробляєте перевірку даних. Якщо надісланий параметр не такий, як ви очікували, можливо, з’явиться помилка SQL, викликана типом даних. Ви повинні використовувати контролер для взаємодії з інформацією та зберігання через модель в методі контролера.

Файл route.php обробляє маршрутизацію. Він призначений для зв'язку між контролером і запитуваним маршрутом.

Щоб дізнатися про контролер, проміжне програмне забезпечення, модель, сервіс ... http://laravel.com/docs/5.1/

Якщо вам потрібна додаткова інформація, вирішення проблеми, ви можете приєднатися до спільноти: https://laracasts.com/

З повагою



4

Декларація в config / app.php у псевдонімах: -

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

Або ви можете імпортувати фасад входу безпосередньо за потребою,

use Illuminate\Support\Facades\Input;

або

use Illuminate\Support\Facades\Input as input;


1

Цей чистий фрагмент коду для мене добре працює:

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

Змінено в laravel 6. Детальну інформацію див. Тут

Не робіть нічого в app.php і ніде більше, просто замініть

вхід :: get () із запитом :: input ()

і

зверху, де ви оголосили введення, валідатор, хеш тощо, видаліть введення та додайте запит

використовувати щось на кшталт:

Налаштування, DB, Файл, Хеш, Введення , Перенаправлення, Сесія, Перегляд, Перевірка, Запит ;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.