Laravel 5: 找不到 'input' 类

124

在我的 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
14个回答

284

它是 Input 而不是 input这个 commitconfig/app.php 中删除了 Input 门面定义,因此您必须手动将其添加到以下的 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
2
你可以使用 \Input 全局访问它。 - pinkal vansia
我需要把它放在哪里?将输入更改为\Input(在表单标签内部)不起作用。另外,我没有使用illuminate\support\facades,而是使用"laravelcollective/html": "5.2.*" - nclsvh
抱歉,我之前没有注意到你的评论,但在HTML中,您可以使用助手函数old(),它只是Input::old()的包装器。 - pinkal vansia
@NicolasV,你可以将它放在config/app.phpaliases中,正如Nvan的答案所指出的 - Nik Sumeiko
Input is replaced with laravel 5.2 use Illuminate\Http\Request; - Blasanka

33

针对 Laravel < 5.2:

打开 config/app.php 文件并将 Input 类添加到 aliases 中:

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

对于 Laravel >= 5.2

Input::改为Request::


27

在 Laravel 5.2 中,Input:: 被替换为 Request::

使用

Request::

将以下代码添加到Controller或任何其他类的顶部

use Illuminate\Http\Request;

27

您可以在folder\config\app.php中添加一个门面(Facade)。

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

5

首先,你的问题是输入类的拼写错误,应该是Input而不是input。并且你必须使用正确的命名空间导入该类。

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/ 祝好。

5
如果您使用的是 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');
   }
 }

5

在Laravel的6版本及以上中:

Input在Laravel 6,7和8版本中不再存在。请使用Request替代Input

根据Laravel文档,从6.x版本开始,Input已被移除。

Input门面

影响概率:中等

Input门面主要是Request门面的副本,已被移除。如果您正在使用Input::get方法,则现在应该调用Request::input方法。所有其他对Input门面的调用只需更新为使用Request门面即可。

use Illuminate\Support\Facades\Request;
..
..
..
 public function functionName(Request $request)
    {
        $searchInput = $request->q;
}

你混淆了Request类。对于Illuminate\Support\Facades\Request,你可以使用Request::input,但是如果你想在Request $request中使用方法类型提示,那么它应该是Illuminate\Http\Request - DisgruntledGoat

4

在aliases下面的config/app.php文件中进行声明:

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

或者您可以根据需要直接导入输入门面,

use Illuminate\Support\Facades\Input;

或者

use Illuminate\Support\Facades\Input as input;

2

'Input' => Illuminate\Support\Facades\Input::class,将其添加到App.php文件中。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接