Dar*_*rke 2 laravel laravel-5.8
使用Laravel 5.8和生成的字段名称,我想知道是否可以更改以编程方式使用的验证消息。
目前我正在使用控制器中验证的自动重定向方法:
function processRequest(Request $request)
{
$generated = session()->get('expected_field');
$request->validate([
'preset' => 'required',
$generated => 'required'
]);
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作,但默认错误消息导致
“该{$generated}字段是必需的”,这没有用。
我想在不重构为自定义请求类的情况下执行此操作。
检查“自定义验证属性” resoures/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' => [],
Run Code Online (Sandbox Code Playgroud)
在这里,可以为各种验证字段设置您自己的显示值。
例如,如果session()->get('expected_field');是"first_name",但你想让它说"First Name",你会设置:
'attributes' => [
'first_name' => 'First Name',
...
]
Run Code Online (Sandbox Code Playgroud)
在那个数组中,你会是金子。验证消息将显示为:
名字字段是必需的。
如果您不喜欢它的结构/措辞,您还可以在“验证语言行”部分更新每个规则的默认消息。
-编辑-
validate()接受第二个参数,它是一组验证消息。这可以自定义以操作由 返回的字符串session()->get('expected_field');,或者完全省略它以支持更通用的错误消息:
$this->validate([
$generated => 'required'
], [
// $generated.'.required' => 'The '.ucwords(str_replace('_', ' ', $generated)).' field is required.'
$generated.'.required' => 'The Anti-Spam field is required.'
]);
Run Code Online (Sandbox Code Playgroud)
使用此逻辑,验证规则将触发任何$generated内容,但消息将更通用,或者操作$generated
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |