首页 > 解决方案 > 发送请求时接收空数组作为输出

问题描述

我在我的 laravel 项目中创建了 2 个名为UserStoreRequestand的类。是一个 FormRequest 来验证来自用户的请求。发送参数后,我只想在方法内访问这些参数,但我得到一个空数组作为响应,而不是发送的参数。UserAuthControllerUserStoreRequestRegister

UserAuthController

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\UserStoreRequest;
use App\Models\User;

class UserAuthController extends Controller
{
    public function register(UserStoreRequest $request)
    {
        dd($request->all());

        /*  $data = $request->validate([
            'name' => 'required|max:255',
            'email' => 'required|email|unique:users',
            'password' => 'required|confirmed'
        ]);

        $data['password'] = bcrypt($request->password);

        $user = User::create($data);

        $token = $user->createToken('API Token')->accessToken;

        return response(['user' => $user, 'token' => $token]);*/
    }
}

UserStoreRequest

namespace App\Http\Requests;

use Illuminate\Http\Request;

class UserStoreRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //
        ];
    }
}

下面我把API类中使用的路由发送参数:

Route::post('/register', 'App\Http\Controllers\Auth\UserAuthController@register');

标签: laravel

解决方案


看起来您正在尝试使用Form Request。为此,请确保您扩展了正确的父类。

// Incorrect
use Illuminate\Http\Request;

class UserStoreRequest extends Request { /* ... */ }

// Correct
use Illuminate\Foundation\Http\FormRequest;

class UserStoreRequest extends FormRequest { /* ... */ }

Laravel 依赖注入容器能够实例化您现有请求的新实例,这就是为什么您不会收到任何错误并且控制器可以使用您的请求实例的原因。但是,Laravel 不知道用实际的请求数据填充它。这就是FormRequest进来的地方。


推荐阅读