在Laravel表单验证后插入记录。

5

我正在尝试 Laravel 5.8 的请求验证。我成功地返回了错误并将其显示在我的视图中。问题是当我尝试不触发任何验证规则时,无论出于什么原因,我都无法向表中插入记录。

错误信息

函数 App\Http\Requests\FieldRequest::Illuminate\Foundation\Providers{closure}() 参数数量过少,需要 1 个,实际上未传递任何参数。

控制器

class FormController extends Controller
{
    public function create()
    {
        return view('create');
    }

    public function store(FieldRequest $req)
    {
        $validate_data = $req->validate();

        Form::create($validate_data);

        return redirect()->back()->with('message', 'Success!');
    }
}

FormRequest

class FieldRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'item_name' => 'bail|required|max:255',
            'sku_no' => 'required|alpha_num',
            'price' => 'required|numeric',
        ];
    }

    public function messages()
    {
        return [
            'item_name.required' => 'An Item Name is required',
            'sku_no.required' => 'An SKU NO is required',
            'price.required' => 'The price is required',
        ];
    }
}

我希望往我的表格里插入数据。为了实现这一目标,我是否需要在控制器中执行验证操作?提前感谢您的回答!


你能放上你的请求代码吗? - Karan
请等一下,我会编辑我的上面的帖子。 - eugenebermudez
1个回答

5
    public function store(FieldRequest $req)
    {
          $data = $req->all();           

          Form::create($data);

          return redirect()->back()->with('message', 'Success!');
    }

当您使用表单请求时,无需使用validate()函数,因为您的请求会经过表单请求以验证数据,然后将其存储记录。

非常感谢,这对我帮助很大。我知道这可能听起来与我的原始帖子不太一样,但是否有特定的规则来执行验证?我仍然想在我的控制器中执行验证,但有些帖子建议将验证放在单独的文件中,例如请求并将其注入到您的控制器中? - eugenebermudez

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