【发布时间】:2015-05-12 15:52:40
【问题描述】:
我喜欢 Laravel 5 中的功能,它让我将验证逻辑放入 Laravel 5 的表单请求之一,然后运行 Laravel will automatically validate it just before 我的控制器的方法。但是,缺少的一件事是“别名”输入名称的简单方法。
例如(为简单起见),假设我有一个登录表单,其中包含一个名为“用户名”的输入字段,但它实际上接受了一个电子邮件地址。我的表单上的标签是 Email。如果出现错误,错误将显示类似“需要用户名”的内容。这很令人困惑,因为我在表单上将该字段标记为 Email。
在使用 Laravel 的验证器时,有什么好的输入别名解决方案?
到目前为止,我提出了两个想法:
解决方案 1: 为每个规则使用 Laravel 的自定义错误消息
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class AuthLoginRequest extends Request {
public function rules()
{
return [
'username' => 'required|email',
'password' => 'required'
];
}
// This is redundant. And may have other pitfalls?
public function messages()
{
return [
'username.required' => 'email is required.',
'username.email' => 'email is invalid.'
];
}
...
}
解决方案 2: 使用我自己的自定义表单类来处理将输入名称更改为其标签/别名(username 变为 email 以进行验证目的),运行验证,然后将它们改回来。
【问题讨论】:
-
我不了解你,但我倾向于以他们接受的数据命名我的字段。如果是用户名,我会这样标记。如果是电子邮件地址,同样的交易。
-
@MartinBean 这是一个简单的例子。但是当你完成所有工作并且利益相关者说“这个标签对我们的最终用户没有意义”之后,你就有麻烦了。
-
$ php artisan make:migration rename_username_to_email -
我不会说你是这样回应肤浅的要求的。
-
如果他们有一个有效的点。如果用户通过电子邮件地址进行身份验证,那么我会将该字段命名为
email而不是username。
标签: php validation laravel laravel-5