我使用Laravel來構建包含輸入數組的表單,並且在發生驗證錯誤時難以顯示已翻譯的屬性名稱。爲了簡單起見,我將發佈我的問題的一個簡單例子。如何在輸入數組上使用自定義驗證屬性
窗體視圖內:在形式請求
<form method="POST" action="{{ route('photo.store') }}" accept-charset="UTF-8" role="form">
<input name="_token" type="hidden" value="{{ csrf_token() }}">
<div class="row">
<div class="col-lg-12">
<div class="form-group{{ $errors->has('testfield') ? ' has-error' : '' }}">
<label class="control-label"
for="testfield">{{ trans('validation.attributes.testfield') }}</label>
<input class="form-control" name="testfield" type="text" id="testfield"
value="{{ old('testfield') }}">
@if ($errors->has('testfield'))
<p class="help-block">{{ $errors->first('testfield') }}</p>
@endif
</div>
</div>
<div class="col-lg-12">
<div class="form-group{{ $errors->has('testfieldarray.0') ? ' has-error' : '' }}">
<label class="control-label"
for="testfieldarray-0">{{ trans('validation.attributes.testfieldarray') }}</label>
<input class="form-control" name="testfieldarray[]" type="text" id="testfieldarray-0"
value="{{ old('testfieldarray.0') }}">
@if ($errors->has('testfieldarray.0'))
<p class="help-block">{{ $errors->first('testfieldarray.0') }}</p>
@endif
</div>
</div>
<div class="col-lg-12">
<div class="form-group{{ $errors->has('testfieldarray.1') ? ' has-error' : '' }}">
<label class="control-label"
for="testfieldarray-1">{{ trans('validation.attributes.testfieldarray') }}</label>
<input class="form-control" name="testfieldarray[]" type="text" id="testfieldarray-1"
value="{{ old('testfieldarray.1') }}">
@if ($errors->has('testfieldarray.1'))
<p class="help-block">{{ $errors->first('testfieldarray.1') }}</p>
@endif
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<input class="btn btn-primary" type="submit" value="Gravar">
</div>
</div>
規則功能:
public function rules() {
$rules = [
'testfield' => array('required'),
];
foreach ($this->request->get('testfieldarray') as $key => $val) {
$rules['testfieldarray.' . $key] = array('required');
}
return $rules;
}
郎/ EN/validation.php
'attributes' => [
'testfield' => 'Test Field',
'testfieldarray' => 'Test Field Array',
],
驗證執行correc就像錯誤信息一樣。錯誤消息中唯一的問題是顯示的屬性的名稱。在兩個數組輸入中,消息中插入的屬性名稱是'testfieldarray.0'和'testfieldarray.1',而不是'Test Field Array'。我已經嘗試添加語言文件'testfieldarray.0'=>'測試字段數組','testfieldarray.1'=>'測試字段數組',但消息保持不變。有沒有辦法正確傳遞屬性名稱?
你可以循環雖然對於每一個 'testfieldarray'自定義消息數組在驗證中,就像您使用規則一樣。谷歌搜索1秒後http://ericlbarnes.com/laravel-array-validation/ – oBo
不應該在''testfieldarray'之前添加'attributes.'。 。 $ key' – saadel