在Laravel

时间:2017-02-06 12:45:11

标签: laravel validation laravel-5

我正在开发Laravel 5.4中的一个项目,我想在两个可选字段上执行“存在”验证规则(仅在提供值时)。

我尝试了以下内容:

// Define validation rules
$validator = Validator::make($request->all(), [
    'user_group_id' => 'sometimes|exists:groups,id',
    'user_organisation_id' => 'sometimes|exists:organisations,id',
    // my other required fields here...
]);

// Validate store request
if ($validator->fails())
    return redirect()
        ->back()
        ->withErrors($validator)
        ->withInput();

在我的应用程序中,用户不会总是属于某个组或组织。因此,当我在没有选择组/组织的情况下提交表单时,我希望验证不会执行,但它是 - 我收到以下错误:

The selected user group id is invalid.
The selected user organisation id is invalid.

只有在提供值时,如何才能应用“存在”验证规则?使用“有时”标志似乎不起作用。

我尝试过类似的东西,似乎有效:

// Define validation rules
if (!empty($request->user_group)) $rules['user_group'] = 'exists:groups,id';
if (!empty($request->user_organisation)) $rules['user_organisation'] = 'exists:organisations,id';
$rules = [
    // normal required field validations here
];
$validator = Validator::make($request->all(), $rules);

这是实现条件验证的唯一方法吗?

1 个答案:

答案 0 :(得分:1)

我通常使用sometimesrequired我没有肯定/证明为什么我需要它,但我最终会得到这样的结果:

'user_group_id' => 'sometimes|required|exists:groups,id',
  PS:根据我对Laravel的一点经验,我遇到了类似的遭遇。从https://laravel.com/docs/5.2/validation#conditionally-adding-rules

进行检查