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

Laravel 5.7出现Undefined variable: form_data错误,请求技术支持

解决Laravel 5.7 Controller store方法的「Undefined variable: form_data」异常

这个问题其实很清晰——你在调用Crud::create($form_data)的时候,变量$form_data根本没有被定义过,PHP自然会抛出未定义变量的错误。下面是两种简单的修复方案,还有一个必须注意的细节:

方案1:直接传入验证后的请求数据

验证通过后,你可以直接用$request->all()获取所有提交的字段,或者用$request->only()指定需要的字段(更安全,能避免意外传入多余参数),直接传给create方法:

public function store(Request $request){ 
    $request->validate([ 
        'name' => 'required', 
        'email' => 'required|email', 
        'number' => 'required|unique:crud|numeric', 
        'message' => 'required', 
    ]); 

    // 直接使用验证后的请求数据(两种方式选其一)
    Crud::create($request->all()); 
    // 更推荐:仅传入需要的字段,提升安全性
    // Crud::create($request->only(['name', 'email', 'number', 'message']));

    return redirect('crud')->with('success', 'Data Added successfully'); 
}

方案2:先定义$form_data变量再使用

如果你需要对请求数据做额外处理(比如修改某个字段值、添加额外字段),可以先把请求数据赋值给$form_data,再传入create方法:

public function store(Request $request){ 
    $request->validate([ 
        'name' => 'required', 
        'email' => 'required|email', 
        'number' => 'required|unique:crud|numeric', 
        'message' => 'required', 
    ]); 

    // 先定义变量并赋值
    $form_data = $request->all();
    // 或者仅获取需要的字段
    // $form_data = $request->only(['name', 'email', 'number', 'message']);
    
    // 这里可以添加数据处理逻辑,比如:
    // $form_data['status'] = 'active';

    Crud::create($form_data); 
    return redirect('crud')->with('success', 'Data Added successfully'); 
}

关键注意事项

修复完变量问题后,别忘了确保你的Crud模型设置了$fillable属性,允许批量赋值这些字段,否则会触发MassAssignmentException异常:

// app/Crud.php
class Crud extends Model
{
    // 指定可以批量赋值的字段
    protected $fillable = ['name', 'email', 'number', 'message'];
}

内容的提问来源于stack exchange,提问作者Om Prakash Thakur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:38:11