实例演示 Laravel 如何创建自定义表单验证规则
出于某种原因,直到现在,我才发现 Laravel 5.5 中引入了一项 artisan
命令,该命令可以定制您的验证规则,类似于验证 Request 类。让我们来看看它的实际效果。
让我们以填写 奥林匹克运动会 的表格为例 - 年份和城市:
现在,让我创建一个验证规则,您只能输入奥运会的年份:
- 奥运会始于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 类中实例化一个对象。
如图:
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: