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

Answers:


275

是的Input,不是input此提交从中删除了Input外观定义,config/app.php因此您必须aliases按如下所示将其手动添加到数组中,

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

或者您可以Input根据需要直接导入立面,

use Illuminate\Support\Facades\Input;

如果我对laravel 5.2中的表单使用laravelcollective并在视图中使用{{Form}},而不是像Shafee那样在路由中使用该怎么办? {{ Form::text('name', Input::old('name'), array('class' => 'form-control')) }}
nclsvh 2015年

2
您可以使用\ Input全局访问它
pinkal vansia 2015年

我需要如何放置在哪里?将Input更改为\ Input(在表单标签内)无效。. 而且没有使用illuminate \ support \ facades .."laravelcollective/html": "5.2.*"
nclsvh 2015年

抱歉,我没有注意您之前的评论,但是在HTML中,您可以使用辅助函数old(),不过它只是Input :: old()的包装器
pinkal vansia 2015年

正如Nvan的答案所指出的,@ NicolasV可以放在aliases里面。config/app.php
Nik Sumeiko '16

28

对于laravel < 5.2

打开config/app.php并将Input类添加到aliases

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

添加到Controller或任何其他类的顶部

use Illuminate\Http\Request;

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,

或者,您可以根据需要直接导入Input Facade,

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 ;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.