我正在尝试laravel中的表单验证。 我的表单中有一个输入文本字段,名为'类别'并且我将字段名称称为“cat'简短。
我定义了这样的验证规则。
public static $rules=array(
"name"=>"required|min:3",
"cat"=>"required"
);
验证失败后,我收到错误消息
The name field is required.
The cat field is required.
但我希望将其显示为"类别字段是必需的"而不是' cat'。
我怎样才能改变“猫”的感觉。到'类别'在错误消息?。
答案 0 :(得分:26)
您可以为字段指定自定义错误消息,如下所示。
$messages = array(
'cat.required' => 'The category field is required.',
);
$validator = Validator::make($input, $rules, $messages);
有关详细信息,请参阅Custom Error Messages section in laravel documentation。
或者您可以为您的字段名称保留映射,如下所示。你可以将它们设置为验证器。因此,您可以看到描述性名称而不是真实的字段名称。
$attributeNames = array(
'name' => 'Name',
'cat' => 'Category',
);
$validator = Validator::make ( Input::all (), $rules );
$validator->setAttributeNames($attributeNames);
答案 1 :(得分:10)
我正在使用它来处理表单中的动态行添加。这个答案是在管理大型表格的背景下提供的。 这个答案适用于 Laravel 5
表单请求
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Response;
class SomeThingFormRequest extends Request {
public function authorize()
{
//be nice
}
public function rules()
{
//my loop building an array of rules ex: $rules['thing.attribute.'.$x]
}
public function attributes()
{
return [
'thing.attribute'.$x => 'Nice Name',
];
}
如果你正在使用Laravel 5,希望这有助于引导你朝着正确的方向前进。我正在努力测试它。关于这种潜力的文件似乎不对?
我在框架(Illuminate \ Foundation \ Http \ FormRequest.php)和(Illuminate \ Validation \ Validator.php)中挖掘了一些线索。
答案 2 :(得分:6)
您可以自定义每条消息,还可以在validation.php(resources / lang / en /)中更改属性字段名称。 用于在validation.php中设置属性
'attributes' => [
'name' => 'Name',
'cat' => 'Category',
'field_name'=>'your attribute'
],
答案 3 :(得分:4)
这是另一种选择 $ this-> validate(request(),[规则],[自定义消息],[自定义属性名称]);
$this->validate(request(), [
'fname' => "required|alpha_dash|max:20",
'lname' => "required|alpha_dash|max:30",
'extensionName' => "required|alpha_dash|max:20",
'specialization' => "max:100",
'subSpecialization' => "max:100"
], [],
[
'fname' => 'First Name',
'lname' => 'Last Name',
'extensionName' => 'Extension Name',
'specialization'=> 'Specialization',
'subSpecialization'=> 'Sub Specialization'
]);
答案 4 :(得分:1)
这是另一种选择:
$data = ['name' => e(Input::get('name')), 'cat' => e(Input::get('cat'))];
$rules = ['name' => 'required|min:3', 'cat' => 'required'];
// pass an item from lang array if you need to
$nice_input_names = ['cat' => trans('lang_file.a_name_for_the_category_input')];
$validator = Validator::make($data, $rules, $messages, $nice_input_names);
答案 5 :(得分:0)
只需到resources/lang/en/validation.php
有一个名为attributes
的空白数组。
在此处添加您的属性名称,例如'cat'=>'category'
现在所有验证消息都显示类别而不是cat。
答案 6 :(得分:0)
the answer 作者 Paul Dela Vega 对我有很大帮助,无法评论,因为没有足够的声誉。
在 Laravel Docs (8.x) 中的任何地方都没有它的信息。 也许这对 Laravel 来说是一个很好的建议,将其添加到他们的文档中,因为它对像我这样的初学者有很大帮助。