【问题标题】:Laravel 5.5 use custom validation rule in validation request file?Laravel 5.5 在验证请求文件中使用自定义验证规则?
【发布时间】:2018-06-03 13:40:59
【问题描述】:

是否可以在验证请求文件中使用我的自定义验证规则?

我想使用名为 EmployeeMail 的自定义规则 这是请求文件的代码

class CoachRequest 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()
{
    $rules = [];

    if ($this->isMethod('post') ) {
        $rules = [
            'name' => 'required|string',
            'email' => 'required|email|employeemail', <<<--- this
            'till' => 'required|date_format:H:i|after:from',
        ];
    }

    //TODO fix this
    //TODO add custom messages for every field

    return $rules;
}
}

当我尝试像这样使用它时它给了我一个错误

方法 [validateEmployeemail] 不存在。

自定义规则代码

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class EmployeeMail implements Rule
{
/**
 * Create a new rule instance.
 *
 * @return void
 */
public function __construct()
{
    //
}

/**
 * Determine if the validation rule passes.
 *
 * @param  string  $attribute
 * @param  mixed  $value
 * @return bool
 */
public function passes($attribute, $value)
{
    // If mail is that of an employee and not a student pass it
    return preg_match("/@test.nl$/", $value) === 1;
}

/**
 * Get the validation error message.
 *
 * @return string
 */
public function message()
{
    return 'Email is geen werknemers mail';
}
}

我只能像这样使用这个自定义规则吗?

$items = $request->validate([
    'name' => [new FiveCharacters],
]);

【问题讨论】:

  • 看来你是用正则表达式验证字符串,同样的逻辑可以通过正则表达式内置验证方法来实现。看看这个。 laravel.com/docs/5.5/validation#rule-regex 无需创建自己的验证规则。
  • 如果您想使用验证,请将其传递到数组中。像这样。 'email' =&gt; ['required', 'email', new employeemail],
  • @RutvijKothari 啊,谢谢,我会改用正则表达式规则,我忘了。也感谢您提到我将如何在请求文件中使用自定义规则

标签: php laravel validation


【解决方案1】:

Rutvij Kothari 在 cmets 中回答了这个问题。

您似乎正在使用正则表达式验证字符串,同样的逻辑可以通过正则表达式内置验证方法来实现。看看这个。 laravel.com/docs/5.5/validation#rule-regex 无需创建自己的验证规则。 ——鲁特维·科塔里

如果您想使用您的验证,请将其传递到一个数组中。像这样。 'email' => ['required', 'email', new employeemail]

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 2014-04-22
    • 2017-12-01
    • 2018-09-15
    • 2017-04-11
    • 2018-02-18
    • 2017-12-06
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多