首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel验证属性“好名字”

Laravel验证属性“好名字”
EN

Stack Overflow用户
提问于 2013-06-11 22:50:00
回答 10查看 101.9K关注 0票数 90

我正在尝试使用"language > {language} > validation.php“中的验证属性来替换:属性名称(输入名称),以便正确读取名称(例如: first_name > First name)。它看起来很容易使用,但是验证器不会显示“好名字”。

我有这个:

代码语言:javascript
复制
'attributes' => array(
    'first_name' => 'voornaam'
  , 'first name' => 'voornaam'
  , 'firstname'  => 'voornaam'
);

用于显示错误:

代码语言:javascript
复制
@if($errors->has())
  <ul>
  @foreach ($errors->all() as $error)
    <li class="help-inline errorColor">{{ $error }}</li>
  @endforeach
  </ul>
@endif

以及控制器中的验证:

代码语言:javascript
复制
$validation = Validator::make($input, $rules, $messages);

$messages阵列:

代码语言:javascript
复制
$messages = array(
    'required' => ':attribute is verplicht.'
  , 'email'    => ':attribute is geen geldig e-mail adres.'
  , 'min'      => ':attribute moet minimaal :min karakters bevatten.'
  , 'numeric'  => ':attribute mag alleen cijfers bevatten.'
  , 'url'      => ':attribute moet een valide url zijn.'
  , 'unique'   => ':attribute moet uniek zijn.'
  , 'max'      => ':attribute mag maximaal :max zijn.'
  , 'mimes'    => ':attribute moet een :mimes bestand zijn.'
  , 'numeric'  => ':attribute is geen geldig getal.'
  , 'size'     => ':attribute is te groot of bevat te veel karakters.'
);

谁能告诉我我哪里做错了。我希望在属性数组(language)中将:属性名称替换为“不错的名称”。

谢谢!

编辑:

我注意到问题是我从来没有为我的Laravel项目设置默认语言。当我将语言设置为'NL‘时,上面的代码可以工作。但是,当我设置语言时,该语言将出现在url中。我更希望不是这样。

所以我的下一个问题是:有没有可能从url中删除语言,或者设置默认语言,这样它就不会出现在那里?

EN

回答 10

Stack Overflow用户

发布于 2013-12-17 19:34:03

是的,你所说的“好名字”属性在几个月前是一个真正的“问题”。希望这个功能现在是implemented,并且使用起来非常简单。

为了简单起见,我将这两个选项分开来解决这个问题:

  1. 全球可能更广泛。 这种方法在here得到了很好的解释,但基本上你需要编辑 application/language/XX/validation.php 验证文件,其中 XX 是你将用于验证的语言。 在底部你会看到一个属性数组; 这将是您的“好名字”属性数组。 按照您的示例,最终结果将是这样的。 '属性' => 数组('first_name' => '名字')
  2. 本地化 这就是 Taylor Otwell 在这个issue中所说的,他说:

您现在可以在 Validator 实例上调用 setAttributeNames。

您现在可以在验证器实例上调用setAttributeNames。

这是完全有效的,如果你检查source code,你会看到

公共函数setAttributeNames(数组$attributes) { $this->customAttributes = $attributes;setAttributeNames $this;}

因此,要以这种方式使用,请参阅以下简单的示例:

$niceNames =数组( 'first_name‘=>’名字‘);$validator =验证器::make(Input::all(),$rules);$validator->setAttributeNames($niceNames);

资源

Github上有一个非常棒的资源库,里面有很多语言包。你一定要去看看。

希望这能有所帮助。

票数 154
EN

Stack Overflow用户

发布于 2016-01-19 23:15:28

此特定问题的正确答案是转到您的应用程序/lang文件夹并编辑validation.php文件。在文件的底部有一个名为attributes的数组

代码语言:javascript
复制
/*
|--------------------------------------------------------------------------
| 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(
    'username' => 'The name of the user',
    'image_id' => 'The related image' // if it's a relation
),

所以我相信这个数组是专门用来定制这些属性名称的。

票数 36
EN

Stack Overflow用户

发布于 2016-03-22 22:42:54

从Laravel 5.2开始你可以...

代码语言:javascript
复制
public function validForm(\Illuminate\Http\Request $request)
{
    $rules = [
        'first_name' => 'max:130'
    ];  
    $niceNames = [
        'first_name' => 'First Name'
    ]; 
    $this->validate($request, $rules, [], $niceNames);

    // correct validation 
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17047116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档