Gra*_*eme 6 php laravel laravel-5
以下是我当前验证的片段:
'independent_financial_advisor' => 'required|boolean',
'understand_objective' => 'required|boolean',
'confirm_objective' => 'required|boolean',
'understand_term_held' => 'required|boolean',
'tax_relief' => 'required|boolean',
Run Code Online (Sandbox Code Playgroud)
我需要验证当independent_financial_advisor为 false 时,下面剩余的 4 个字段必须为 true。我找不到任何可以执行此操作的 Laravel 规则,因此我考虑使用闭包来创建自定义规则。
问题是我不知道如何引用闭包中的另一个字段来检查其值。
解决这个问题的最佳方法是什么?谢谢
我添加了一个名为 的自定义验证规则,true_if_reference_is_false并向其传递了一个参数,即independent_financial_advisor.
所以验证看起来像这样:
$this->validate($request, [
'independent_financial_advisor' => 'required|boolean',
'understand_objective' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor',
'confirm_objective' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor',
'understand_term_held' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor',
'tax_relief' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor'
]);
Run Code Online (Sandbox Code Playgroud)
您需要在App\Providers\AppServiceProvider.php
Import Facade Validator 中定义此验证规则。
use Illuminate\Support\Facades\Validator;
Run Code Online (Sandbox Code Playgroud)
并在方法中定义规则boot:
Validator::extend('true_if_reference_is_false', function ($key, $value, $parameters, $validator) {
$request = request();
$keyReference = $parameters[0];
if ($request->has($parameters[0]) && $request->$keyReference == false)
return (bool)$request->$key;
else
return true;
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
23908 次 |
| 最近记录: |