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 การกระทำนี้ได้ลบนิยามซุ้มออกจากเหตุนี้คุณจึงต้องเพิ่มสิ่งนั้นในอาร์เรย์ด้วยตนเองดังต่อไปนี้inputInputconfig/app.phpaliases

'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 (ภายในแท็กแบบฟอร์ม) ไม่ทำงาน .. นอกจากนี้ฉันไม่ได้ใช้ illuminate \ support \ facades .. แต่"laravelcollective/html": "5.2.*"
nclsvh

ขออภัยฉันไม่ได้ใส่ใจกับความคิดเห็นก่อนหน้านี้ของคุณ แต่ใน HTML คุณสามารถใช้ฟังก์ชันตัวช่วย old () ซึ่งไม่มีอะไรนอกจาก wrapper สำหรับ 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.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;

ประการที่สองเป็นวิธีที่สกปรกในการจัดเก็บลงในฐานข้อมูลผ่าน 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.