Laravel中的组合表单请求

kcwpcxri  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(96)

我有两个验证表单的请求:

  • StoreProductRequest(验证新创建的产品)
  • StoreProductBuildRequest(验证产品中的组件)

在“编辑”视图中,此功能被合并到一个表单中。
在提交表单时,运行两个表单请求的最佳方式是什么?我宁愿避免创建一个新的请求(StoreProductAndBuildRequest?),因为这不是很干。

t3psigkw

t3psigkw1#

您是否尝试过同时注入两个表单请求?

public function update(StoreProductRequest $requestOne, StoreProductBuildRequest $requestTwo)
{
    // do something
}
jk9hmnmh

jk9hmnmh2#

您可以在一个请求文件中为多个请求定义规则,如下所示

<?php

namespace App\Http\Requests;

use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;

class AdmissionRequest extends FormRequest
{
    /**
     * 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<string, mixed>
     */
    public function rules()
    {
        return match(Route::currentRouteName()) {
            'admission.store' => $this->store(),
            'admission.update' => $this->update()
        };
    }

    /**
     * Validate Rules for store Request
     */
    public function store()
    {
        // Your Store Request array
    }

    /**
     * Validate Rules for update Request
     */
    public function update()
    {
        // Your Update Request Rule array
    }
}

相关问题