Уровень 5: входной класс не найден

67

В моем файле 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
Теги:
laravel-5
laravel-5.2
laravel-5.1

9 ответов

174
Лучший ответ

Это Input, а не Input. Это commit удалило определение Input facade из config/app.php, поэтому вам нужно вручную добавить это в массив aliases, как показано ниже,

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

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

use Illuminate\Support\Facades\Input;
  • 0
    Что если я использую laravelcollective для форм в laravel 5.2 и использую {{Form}} в представлении, а не в маршрутах, как это делает Shafee. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
  • 2
    Вы можете использовать \ Input для доступа к нему глобально
Показать ещё 3 комментария
23

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

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

Для laravel < 5.2:

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

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

Для laravel >= 5.2

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

14

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

Итак, когда вам нужно вводить что-то вместо использования

Input:: 

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

Request::

И если вы получите ошибку, то о "не следует использовать статически" просто добавьте это в начало файла

use 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

если вы используете версию 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');
   }
 }
2

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

0

В отличие от функции, она должна быть "Input not" input

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню