我正在尝试使用“语言”中的验证属性
我有这个:
'attributes' => array(
'first_name' => 'voornaam'
, 'first name' => 'voornaam'
, 'firstname' => 'voornaam'
);
要显示错误,请执行以下操作:
@if($errors->has())
<ul>
@foreach ($errors->all() as $error)
<li class="help-inline errorColor">{{ $error }}</li>
@endforeach
</ul>
@endif
以及控制器中的验证:
$validation = Validator::make($input, $rules, $messages);
$messages数组:
$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.'
);
有人能告诉我我做错了什么吗。我希望:attribute name在attributes数组(语言)中被替换为“nice name”。
谢谢
编辑:
我注意到问题是我从来没有为我的Laravel项目设置默认语言。当我设置语言为'NL'上面的代码工作。但是,当我设置我的语言时,该语言将出现在url中。我更希望不是。
所以我的下一个问题是:是否可以从url中删除语言,或者设置默认语言,这样它就不会出现在那里?
因为Laravel 5.2你可以...
public function validForm(\Illuminate\Http\Request $request)
{
$rules = [
'first_name' => 'max:130'
];
$niceNames = [
'first_name' => 'First Name'
];
$this->validate($request, $rules, [], $niceNames);
// correct validation
这个问题的正确答案是转到你的app/lang文件夹并编辑验证。php文件在文件底部有一个名为attributes的数组:
/*
|--------------------------------------------------------------------------
| 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
),
所以我相信这个数组是专门定制这些属性名的。
是的,几个月前,你所说的“好听的名字”是一个真正的“问题”。希望这个功能现在已经实现,并且使用起来非常简单。
为简单起见,我将拆分两个选项来解决此问题:
>
全球范围可能更广泛。这里很好地解释了这种方法,但基本上您需要编辑应用程序/language/XX/validation。php验证文件,其中XX是用于验证的语言。
在底部,您将看到一个属性数组;这将是您的“好名字”属性数组。按照您的示例,最终结果如下。
'attributes' => array('first_name' => 'First Name')
在当地,泰勒·奥特威尔(Taylor Otwell)在这一问题上说:
您现在可以在验证器实例上调用setAttributeName。
这是完全有效的,如果您检查源代码,您将看到
public function setAttributeNames(array $attributes)
{
$this->customAttributes = $attributes;
return $this;
}
因此,要使用这种方法,请参见以下简单示例:
$niceNames = array(
'first_name' => 'First Name'
);
$validator = Validator::make(Input::all(), $rules);
$validator->setAttributeNames($niceNames);
资源
Github上有一个非常棒的回购协议,有很多语言包可以使用。当然你应该去看看。
希望这有帮助。
As we learned earlier in the book, the validate method on a Model is called before set and save, and is passed the model attributes updated with the values from these methods. By default, where we def
我们正在构建一个需要精确性的apiendpoint。我们希望对POST/PUT到服务器的参数实施严格的验证。 如果api用户发送了一个不受支持的对(例如,我们允许参数[first\u name,last\u name],并且用户包含一个不受支持的参数[country]),我们希望验证失败。 已尝试构建名为(用作)的自定义验证器,但要使其在数组中可用,必须将其应用于嵌套/子属性列表的父级(…因为我们
晚上好,我正在尝试在下面的场景中使用Hibernate验证器:
我想使用BouncyCastle生成一个简单的CMS签名。这代码管用! 但是,如何添加签名属性呢? 我要删除默认签名属性并添加签名策略标识符。 文章非常欢迎。
我正在用一些电影信息创建这种数据库。 逻辑结构非常简单,一部电影有很多演员,一个演员拍了很多电影,所以这是一种多对多的关系。 我还使用library创建了一个简单的输入,其中写入了标记之类的参与者,并用逗号或空格键(此处是指向文档的链接)将它们分隔开,下面是一个简单的快照,以便更好地理解结果 在创建/存储函数中,我不需要检查是否存在任何关系,因为电影是新的。所以我只需要检查演员是否已经存在于数据库
问题内容: 我有一个laravel 模型,该模型在和上具有唯一的验证规则。在我的存储库中,当我更新模型时,我将重新验证字段,以使所需的规则验证没有问题: 测试失败 有没有办法优雅地解决这个问题? 问题答案: 将当前正在更新的实例的追加到验证器。 传递实例的来忽略唯一的验证器。 在验证器中,使用参数来检测您是否正在 更新 或 创建 资源。 如果进行更新,则强制唯一规则忽略给定的id: 如果创建,请照