You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Postman调用Laravel注册接口遇属性未初始化错误求助

问题:Laravel注册接口POST请求报错

错误详情

发送POST请求到http://localhost:8000/api/v1/auth/register时触发错误:

Error: Typed property Illuminate\Http\Request::$password must not be accessed before initialization

错误位于文件C:\Users\Desktop\project\app\Http\Controllers\Api\V1\Auth\CustomerAuthController.php第70行,对应代码:

'password' => bcrypt($request->password),

注册接口代码

public function register(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required',
        'email' => 'required|unique:users',
        'phone' => 'required|unique:users',
        'password' => 'required|min:8',
    ], [
        'name.required' => 'The name field is required.',
        'phone.required' => 'The phone field is required.',
    ]);

    if ($validator->fails()) {
        return response()->json(['errors' => Helpers::error_processor($validator)], 403);
    }
    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'phone' => $request->phone,
        'password' => bcrypt($request->password),
    ]);

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

    return response()->json(['token' => $token,'is_phone_verified' => 0, 'phone_verify_end_url'=>"Api/V1/auth/verify-phone" ], 200);
}

请求体内容

{
"name":"user",
"email":"test@gmail.com",
"phone":"12345678",
"password":"12345678"
}

问题原因

这是PHP 7.4+类型属性初始化规则导致的问题:如果Illuminate\Http\Request类中给$password属性声明了类型但未完成初始化,直接通过$request->password访问会触发该错误。Laravel中正确获取请求参数的方式应该用框架提供的方法,而非直接访问属性。

解决方案

将代码中直接访问属性的方式改为使用input()方法获取请求参数:

修改后的核心代码片段:

$user = User::create([
    'name' => $request->input('name'),
    'email' => $request->input('email'),
    'phone' => $request->input('phone'),
    'password' => bcrypt($request->input('password')),
]);

也可以使用$request->get('password'),效果和input()一致。统一使用框架方法获取参数,能避免类型属性相关的初始化问题,同时更符合Laravel的规范。

内容的提问来源于stack exchange,提问作者Yahia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:35:15