【问题标题】:laravel lumen Input class not foundlaravel 流明输入类未找到
【发布时间】:2015-07-08 15:50:58
【问题描述】:

您好,我正在测试 lumen new laravel micro-frameword,当我尝试从 Web 服务获取输入时,我收到此错误

Fatal error: Class 'App\Http\Controllers\Input' not found in   C:\wamp\www\lumen\app\Http\Controllers\WsController.php

这是我的代码:

<?php namespace App\Http\Controllers;

class WsController extends Controller {

 public function addUser()
  {
        $user = new Models\User;
        $user->email = Input::get('email');;
        $user->password = strtoupper(md5(Input::get('password')));
        $user->first_name = Input::get('first_name');
        $user->last_name = Input::get('last_name');
        if($user->save()){
            return Models\User::all();
        }
  }
 }

【问题讨论】:

  • 您是否取消了 withFacadesbootstrap.php 中的注释?
  • 你可以在你的命名空间之后尝试一下吗,使用 App\Http\Controllers\Input;

标签: php laravel lumen


【解决方案1】:

解决方案 #1

bootstrap/app.php 中取消注释$app-&gt;withFacades(); 以允许您在控制器中使用外观。

<?php 

namespace App\Http\Controllers;

use Input;

class WsController extends Controller 
{

    public function addUser(Request $request)
    {
        $user = new Models\User;
        $user->email = Input::get('email');
        $user->password = strtoupper(md5(Input::get('password')));
        $user->first_name = Input::get('first_name');
        $user->last_name = Input::get('last_name');
        if($user->save()) {
            return Models\User::all();
        }
    }
}

解决方案 #2(个人偏好)

使用依赖注入将Illuminate\Http\Request 类注入到您的方法中。

<?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class WsController extends Controller 
{

    public function addUser(Request $request)
    {
        $user = new Models\User;
        $user->email = $request->input('email');;
        $user->password = strtoupper(md5($request->input('password')));
        $user->first_name = $request->input('first_name');
        $user->last_name = $request->input('last_name');

        if($user->save()) {
            return Models\User::all();
        }
    }
}

【讨论】:

  • 如何在GET方法中添加$request
  • @N.B.所以我要么创建Request 对象的实例作为参数,要么通过调用Request Facade 静态调用?
  • @Volatil3 您可以将Request 的实例传递给您的模型,并将其作为控制器的第一个参数。
  • Input 外观与$request-&gt;input() 之间的区别在于您在后面的示例中访问数组,您不能调用has()get() 等方法
【解决方案2】:
   <?php namespace App\Http\Controllers;

    use Illuminate\Support\Facades\Request as Request;

    class WsController extends Controller {

    public function addUser()
    {        
            //creating a new user object from User model class
            $user = new Models\User;
            //getting the email value from the email input like Input::get('email');
            $user->email = Request::input('email');
            //same as above happen with the rest of the lines
            $user->password = strtoupper(md5(Request::input('password')));
            $user->first_name = Request::input('first_name');
            $user->last_name = Request::input('last_name');
            //User model has a save() method, so is calling if return true the if block will be executed
            if($user->save()){
            return Models\User::all();
            }
      }

            //this is the best way in lumen to execute some method, because lumen is powerful in small APIs and restful services
    }

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2018-05-03
    • 2020-11-11
    • 1970-01-01
    • 2016-04-04
    相关资源
    最近更新 更多