实例演示 Laravel 如何创建自定义表单验证规则

出于某种原因,直到现在,我才发现 Laravel 5.5 中引入了一项 artisan 命令,该命令可以定制您的验证规则,类似于验证 Request 类。让我们来看看它的实际效果。

让我们以填写 奥林匹克运动会 的表格为例 - 年份和城市:

laravel form

现在,让我创建一个验证规则,您只能输入奥运会的年份:

  • 奥运会始于1896年
  • 年份不能大于当前年份
  • 年份应当被4整除

让我们运行一个命令:

php artisan make:rule OlympicYear

Laravel 生成了一个文件 app/Rules/OlympicYear.php:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class OlympicYear implements Rule
{

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        //
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}

就像我说的,它类似于 Requests 类验证。我们写方法。passes() 应该根据$value 条件返回 true / false ,在我们的例子里是这样的:

public function passes($attribute, $value)
{
    return $value >= 1896 && $value <= date('Y') && $value % 4 == 0;
}

接下来,我们将错误消息写为:

public function message()
{
    return ':attribute should be a year of Olympic Games';
}

最后,我们如何使用此类?在控制器的  store()  方法中,我们有以下代码:

public function store(Request $request)
{
    $this->validate($request, ['year' => new OlympicYear]);
}

注意语法,第二个参数应该是一个数据,然后我们在 Rule 类中实例化一个对象。
如图:

自定义 Laravel 验证

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laraveldaily.com/how-to-create-c...

译文地址:https://learnku.com/laravel/t/39316

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!