【问题标题】:how to use the same request to for alternative functions in Laravel如何在 Laravel 中使用相同的请求来获取替代功能
【发布时间】:2020-07-17 20:11:30
【问题描述】:

我想验证对我的 createUser 函数的请求,因此我创建了自定义请求并添加了我的规则 然后我想验证对我的 updateUser 函数的相同请求,但我想删除新函数中的“必需”规则而不创建新的自定义请求

我的自定义请求

class userRequest 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
 */
public function rules()
{
    return [
      'name' => 'required|string|max:255',
      'email' => 'required|string|email|max:255|unique:users',
      'password' => 'required|string|min:6|confirmed',
      'priv' => 'required|integer',
    ];
}
protected function failedValidation(Validator $validator)
{
    $response = [
    'status' => 'failure',
    'status_code' => 400,
    'message' => 'Bad Request',
    'errors' => $validator->errors(),
];
    throw new HttpResponseException(response()->json($response, 400));
}

}

【问题讨论】:

    标签: laravel laravel-request


    【解决方案1】:

    您应该对您要使用的每种方法进行不同的请求验证,您可以在此处阅读更多信息https://laravel.com/docs/7.x/validation

    【讨论】:

    • 谢谢,但我知道如何像我之前提到的那样通过创建自定义请求来进行验证
    【解决方案2】:

    你可以先查看路由,修改$rules数组,建议你试试下面的代码:

    public function rules()
    {
        $rules = [
            'name' => 'string|max:255',
            'email' => 'string|email|max:255|unique:users',
            'password' => 'string|min:6|confirmed',
            'priv' => 'integer',
        ];
    
        if (request()->route() != route('createUserRouteName')) { // write route name of createUser method
            foreach ($rules as $key => $rule) {
                $rules[$key] = 'required|' . $rule;
            }
        }
        return $rules;
    }
    
    

    希望对你有用,如果有问题请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-17
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 2020-08-09
      • 2017-12-22
      • 1970-01-01
      相关资源
      最近更新 更多