laravel 5:クラス「入力」が見つかりません


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;

laravel 5.2のフォームにlaravelcollectiveを使用し、Shafeeのようにルートではなくビューで{{Form}}を使用するとどうなりますか。 {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh 2015

2
\ Inputを使用して、グローバルにアクセスできます
ピンクバンシア

これをどこにどのように配置する必要がありますか?入力を(フォームタグ内の)\ Inputに変更しても機能しません。また、illuminate \ support \ "laravelcollective/html": "5.2.*"
facades

申し訳ありませんが、私は以前のコメントに注意を払っていないが、HTMLに、あなたはヘルパーが(古い機能を使用することができます)入力のためには何もなく、ラッパーではありませんどの::古い()
pinkal vansia

@NicolasV は、Nvanの回答が指摘するaliasesようにconfig/app.php、内部に配置できます。
Nik Sumeiko 2016年

28

laravel < 5.2の場合

クラスを開いconfig/app.phpて追加Inputaliasesます。

'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;

「入力」ではなく「入力」と呼びたい場合は、これを追加します。

use Illuminate\Support\Facades\Input as input;

2つ目は、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や他の場所では何もせず、単に置き換えます

input :: get()とRequest :: input()

そして

Input、Validator、Hashなどを宣言する上部で、Inputを削除してRequestを追加します

次のようなものを使用してください:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.