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;
Pinkal Vansia
источник
Что, если я использую laravelcollective для форм в laravel 5.2 и использую {{Form}} в представлении, а не в маршрутах, как это делает Шафи. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh
2
Вы можете использовать \ Input для доступа к нему глобально
pinkal vansia
Как или где мне это поставить? Изменение Input на \ Input (внутри тегов формы) не работает .. Также я не использую "laravelcollective/html": "5.2.*"
lighting
Извините, я не обратил внимание на ваш предыдущий комментарий, но в HTML вы можете использовать вспомогательную функцию old (), которая представляет собой не что иное, как оболочку для Input :: old ()
pinkal vansia
@NicolasV, вы можете положить его aliasesвнутрь config/app.php, как указывает ответ Nvan .
Nik Sumeiko
28

Для laravel < 5.2 :

Откройте config/app.phpи добавьте Inputкласс в aliases:

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

Для laravel >= 5.2

Изменить Input::наRequest::

CONvid19
источник
26

Вы можете добавить фасад в свой folder\config\app.php

'Input' => Illuminate\Support\Facades\Input::class,
Nvan
источник
23

В Laravel 5.2 Input :: заменяется на Request ::

использовать

Request::

Добавить в начало контроллера или любого другого класса

use Illuminate\Http\Request;
lewis4u
источник
5

Во-первых, ваша проблема связана с написанием класса ввода, должно быть Input вместо input. И вам нужно импортировать класс с хорошим пространством имен.

use Illuminate\Support\Facades\Input;

Если вы хотите, чтобы он назывался «ввод», а не «ввод», добавьте это:

use Illuminate\Support\Facades\Input as input;

Во-вторых, это грязный способ сохранения в базе данных через route.php, и вы не обрабатываете проверку данных. Если отправленный параметр не соответствует вашим ожиданиям, возможно, появится ошибка SQL, вызванная типом данных. Вы должны использовать контроллер для взаимодействия с информацией и хранения через модель в методе контроллера.

Файл route.php обрабатывает маршрутизацию. Он предназначен для установления связи между контроллером и запрашиваемым маршрутом.

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

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

С уважением.

изуродовать
источник
4

если вы используете Laravel версии 5.2. Просмотрите это: 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');
   }
 }
Ферхат КОГЕР
источник
4

Объявление в config / app.php под псевдонимами: -

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

Или вы можете напрямую импортировать входной фасад при необходимости,

use Illuminate\Support\Facades\Input;

или

use Illuminate\Support\Facades\Input as input;
Чандракант Ганджи
источник
2

'Input' => Illuminate\Support\Facades\Input::class, добавьте его в App.php.

Пракаш похрель
источник
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

Добавьте это в config / app.php под псевдонимами: -

'Input' => Illuminate\Support\Facades\Input::class,
Дипак Кумар
источник
0

Обзывает из класса должно быть Inputнеinput

Кеннет Сандей
источник
0

Это изменилось в laravel 6. Подробнее см. Здесь

Не делайте ничего в app.php и других местах, просто замените

input :: get () с Request :: input ()

и

сверху, где вы объявляете Input, Validator, Hash и т. д., удалите Input и добавьте Request

используйте что-то вроде:

Конфигурация, БД, Файл, Хеш, Ввод , Перенаправление, Сессия, Просмотр, Валидатор, Запрос ;

GOLDENSPARROW МОБИЛЬНЫЙ
источник