如何在Laravel请求的校验规则中添加trim函数?

How to add the trim function to validation rules in Laravel Request?

我有如下所示的验证规则。我正在使用 exists 来确保合同是唯一的。现在的问题是合同号与 space 一起存储在数据库中,因此此验证不适用于这些情况(例如,它会说合同号不存在,这是由于 space数前)。为了解决这个问题,我想做 trim(contract_number)。请问如何将trim函数应用到下面的contract_number

public function rules()
{
    return [   
        'tel' => 'required|max:25',
        'contract' => 'required|digits:9|exists:accounts,contract_number',
        'nom' => 'required|max:255',
        'language' => 'required|max:2',
        'g-recaptcha-response' => 'required|captcha',
    ];
}

Laravel docs 中,您可以在 自定义表单请求 上使用 withValidator 方法以在 request 上添加任何进一步的验证。从列表中删除规则 exists:accounts,trim(contract_number),并尝试使用 after 钩子自定义规则。

/**
* Configure the validator instance.
 *
 * @param  \Illuminate\Validation\Validator  $validator
 * @return void
 */
public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if (!\DB::table('accounts')->whereRaw('TRIM(contract_number) = ?', [request('contract_number')])->exists()) {
            $validator->errors()->add('contract_number', 'Contract number does not exists');
        }
    });
}