对于同一个规则使用两次的Laravel自定义错误消息


Laravel custom error messages for same rule used twice

我试图在我的Laravel 5.0验证器方法中使用两次或更多次的相同规则上创建不同的自定义错误消息

$messages = [ 'exists'    => 'The order finished',
              'exists'    => 'The order belong to another user.' ];   
$validator = Validator::make( ['order_id' => $order_id], 
                              ['order_id' => "required|exists:t_orders,channel_id,finished,0|exists:t_orders,channel_id,user_id,$user_id"], 
$messages);

但是,无论验证应用的顺序如何,都只返回最后一个自定义错误消息。

是否有一种方法,我使用相同的规则两次或更多次,并为每次创建不同的自定义错误消息?

使用不同的规则或消息集再次使用验证器。

$rules1 = [
 'field' =>'exists:table,column',
];
$rules2 = [
 'field' =>'exists:another_table,another_column',
];
$messages1 = ['field.exists' =>'The order finished'];
$messages2 = ['field.exists' => 'The order belongs to another user'];
$validator1 = Validator::make($input, $rules1, $messages1);
$validator2 = Validator::make($input, $rules2, $messages2);

你的问题是关于数组在php中,在$messages变量你基本上有一个关键,如果你dd($messages);在$messages变量下面,你会看到它只有一个键,这是第二个键。如果您像下面的代码一样为消息数组设置两个键,那么您将会很好。

$messages = [ 'exists'    => 'The order finished',
    'existsTwo'    => 'The order belong to another user.' ];   
$validator = Validator::make( ['order_id' => $order_id], 
    ['order_id' =>"required|exists:t_orders,channel_id,finished,0|existsTwo:t_orders,channel_id, user_id,$user_id"], $messages);