如何在laravel4上的验证错误消息中将多语言名称设置为数据库字段


How to set multi-language name to a db field in validation error message on laravel4

关于如何在laravel 4验证后管理错误消息中的数据库字段名称,我有一个小问题。

为了验证表单,我使用了如下雄辩的语句:

public static function validate($input)
    {
        $validation = array(
            'rules' => array(
                'title'     => 'required|min:5'
            ),
            'messages' => array(
                'title.required'            => 'Inserer un titre!'
            )
        );
        return Validator::make($input, $validation['rules'], $validation['messages']);
    }

为了翻译错误消息,我使用了这个github repo:https://github.com/caouecs/Laravel4-lang

每件事都能很好地翻译属性(数据库列)名称。我不知道该怎么做,有什么建议吗?

fr : Le texte **title** doit contenir au moins 5 caractères.
en : The **title** must be at least 5 characters.

(在每种情况下,标题均为英文。)

有两种方法可以为验证错误消息提供自定义字段名。

首先是使用语言配置文件app/lang/lang/validation.php

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
'attributes' => array('foo' => 'Bar'),

这将为foo字段生成验证错误,例如"The Bar must be…"而不是"The foo must is…"。

第二种方式没有记录在案。您可以在运行时使用Validator类的setAttributeNames()方法提供自定义数组:

    $validator = Validator::make($input, $rules, $messages);
    $validator->setAttributeNames(array('foo' => 'Bar'));
    if ($validator->passes())
        ...