Laravel 8数组验证自定义提示:如何提取数组索引后缀
解决Laravel 8验证消息格式问题
你的问题出在正则替换逻辑上,当前的preg_replace('/^[a-zA-Z_]*\./', '', ':key')没有正确移除price_per_image.前缀,导致消息里保留了完整的price_per_image.0字符串。
修改后的代码
将正则表达式改为精准匹配字段前缀price_per_image.,同时调整字符串拼接逻辑,即可得到你想要的格式:
public function messages() { return [ 'price_per_image.array' => 'Price must be an array', 'price_per_image.required' => 'Price per image field is required', 'price_per_image.*.required' => 'Price per image.' . preg_replace('/^price_per_image\./', '', ':key') . ' field required', 'price_per_image.*.numeric' => 'You have invalid characters in the price field', 'price_per_image.*.between' => 'Price per image.' . preg_replace('/^price_per_image\./', '', ':key') . ' must be in between 0.1 to 1000', ]; }
关键说明
- 用精准匹配的正则
/^price_per_image\./替代泛匹配的/^[a-zA-Z_]*\./,确保完全移除price_per_image.前缀,只保留索引部分(如0、1)。 - 在
Price per image后直接添加.,和处理后的索引拼接,就能生成Price per image.0的预期格式。
内容的提问来源于stack exchange,提问作者amit solanki
相关产品推荐
相关产品推荐

