Laravel自定义验证消息如何动态引用规则参数避免重复修改
Laravel 验证消息动态引用规则参数方案
Laravel 验证组件原生支持占位符替换能力,不需要手动硬编码规则中的参数值,直接在自定义消息中使用对应占位符即可,后续修改规则参数时验证消息会自动同步取值,无需重复维护两处内容。
常用规则对应占位符
带参数的验证规则都有内置的占位符可以直接调用,常见的对应关系如下:
digits:值规则:使用:digits占位符获取规则中定义的位数min:值规则:使用:min占位符获取规则中定义的最小阈值max:值规则:使用:max占位符获取规则中定义的最大阈值size:值规则:使用:size占位符获取规则中定义的固定长度/大小between:min,max规则:可同时使用:min、:max两个占位符获取上下限in:a,b,c规则:使用:values占位符获取允许的取值列表
改造后的代码示例
你只需要把原来消息里硬编码的数值替换成对应占位符即可,修改后的messages()方法如下:
public function messages() { return [ 'cuit.required' => 'Campo obligatorio', 'cuit.numeric' => 'El CUIT solo puede ser númerico', 'cuit.digits' => 'El CUIT debe tener :digits dígitos', 'razon_social.required' => 'Campo obligatorio', 'razon_social.alpha' => 'La razón social solo puede ser texto', 'razon_social.max' => 'La razón social puede tener hasta :max caracteres', 'razon_social.min' => 'La razón social debe tener al menos :min caracteres', 'fantasia.required' => 'Campo obligatorio', 'fantasia.string' => 'El nombre de fantasía solo puede ser texto', 'fantasia.max' => 'Este campo puede tener un maximo de :max caracteres', 'fantasia.min' => 'Este campo debe tener al menos :min caracteres', ]; }
改造完成后,比如后续你把razon_social的规则从max:64调整为max:128,对应验证消息会自动显示128字符,不需要额外修改消息配置。
内容的提问来源于stack exchange,提问作者Maxi Perchik
相关产品推荐
相关产品推荐

