laravel 5: Kelas 'input' tidak ditemukan

114

Dalam routes.phpfile saya, saya memiliki:

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

});

Saya memiliki formulir untuk pendaftaran pengguna. Saya juga mengambil nilai input formulir di routes.php.

Tetapi kesalahan muncul ketika saya mendaftarkan pengguna. Kesalahan:

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

Jawaban:

275

Ini Inputdan tidak input. Komit ini menghapus Inputdefinisi fasad dari sana, config/app.phpmaka Anda harus menambahkannya secara manual ke dalam aliasesarray seperti di bawah ini,

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

Atau Anda dapat mengimpor Inputfasad secara langsung sesuai kebutuhan,

use Illuminate\Support\Facades\Input;
vansia pinkal
sumber
Bagaimana jika saya menggunakan laravelcollective untuk formulir di laravel 5.2 dan saya menggunakan {{Form}} dalam tampilan, bukan di rute seperti yang dilakukan Shafee. {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh
2
Anda dapat menggunakan \ Input untuk mengaksesnya secara global
pinkal vansia
Bagaimana atau di mana saya harus meletakkan ini? Mengubah Input ke \ Input (di dalam tag formulir) tidak berfungsi .. Juga saya tidak menggunakan illuminate \ support \ "laravelcollective/html": "5.2.*"
facades
Maaf saya tidak memperhatikan komentar Anda sebelumnya tetapi dalam HTML Anda dapat menggunakan fungsi pembantu old () yang tidak lain adalah pembungkus untuk Input :: old ()
pinkal vansia
@NicolasV Anda bisa menempatkannya di bawah aliasesdi dalam config/app.php, sebagai jawaban Nvan ini menunjukkan .
Nik Sumeiko
28

Untuk laravel < 5.2 :

Buka config/app.phpdan tambahkan Inputkelas ke aliases:

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

Untuk laravel >= 5.2

Ganti Input::keRequest::

CONvid19
sumber
26

Anda dapat menambahkan fasad di folder\config\app.php

'Input' => Illuminate\Support\Facades\Input::class,
Nvan
sumber
23

Di Laravel 5.2 Input :: diganti dengan Request ::

menggunakan

Request::

Tambahkan ke atas Kontroler atau Kelas lainnya

use Illuminate\Http\Request;
lewis4u
sumber
5

Pertama, masalah Anda adalah tentang ejaan kelas input, harus Input, bukan input. Dan Anda harus mengimpor kelas dengan namespace yang bagus.

use Illuminate\Support\Facades\Input;

Jika Anda menginginkannya disebut 'input' bukan 'Input', tambahkan ini:

use Illuminate\Support\Facades\Input as input;

Kedua, Ini adalah cara kotor untuk menyimpan ke database melalui route.php, dan Anda tidak memproses validasi data. Jika parameter terkirim tidak seperti yang Anda harapkan, mungkin akan muncul kesalahan SQL, yang disebabkan oleh tipe datanya. Anda harus menggunakan pengontrol untuk berinteraksi dengan informasi dan menyimpan melalui model dalam metode pengontrol.

File route.php menangani perutean. Ini dirancang untuk membuat hubungan antara pengontrol dan rute yang diminta.

Untuk mempelajari tentang controller, middleware, model, service ... http://laravel.com/docs/5.1/

Jika Anda membutuhkan informasi lebih lanjut, solusi tentang masalah Anda dapat bergabung dengan komunitas: https://laracasts.com/

Salam.

Menjelekkan
sumber
4

jika Anda menggunakan Laravel versi 5.2 Tinjau ini: 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');
   }
 }
Ferhat KOÇER
sumber
4

Deklarasi di config / app.php di bawah alias: -

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

Atau Anda dapat mengimpor fasad Input secara langsung sesuai kebutuhan,

use Illuminate\Support\Facades\Input;

atau

use Illuminate\Support\Facades\Input as input;
Chandrakant Ganji
sumber
2

'Input' => Illuminate\Support\Facades\Input::class, tambahkan ke App.php.

prakash pokhrel
sumber
1

Cuplikan kode bersih ini berfungsi dengan baik untuk saya:

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();
});
Pradeep Sapkota
sumber
0

Tambahkan ini di config / app.php di bawah alias: -

'Input' => Illuminate\Support\Facades\Input::class,
Deepak Kumar
sumber
0

Miscall of Class seharusnya Inputtidakinput

Kenneth Sunday
sumber
0

Ini diubah di laravel 6. Lihat info lebih lanjut di sini

Jangan lakukan apa pun di app.php dan di mana pun, cukup ganti

input :: get () dengan Request :: input ()

dan

di atas tempat Anda mendeklarasikan Input, Validator, Hash dll., Hapus Input dan tambahkan Permintaan

gunakan sesuatu seperti:

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

GOLDENSPARROW MOBILE
sumber