Laravel框架abort()使用__()翻译报错信息时占位符替换失效问题
问题根因
你对abort()函数的参数用途理解有误,传递参数的位置错误:
Laravel 中abort()函数的签名为 abort(int $状态码, string $错误信息 = '', array $响应头 = []),第三个参数是用来配置HTTP响应头的,并不会参与翻译占位符的替换逻辑。你把占位符替换数组传给了abort()的第三个参数,自然不会生效。
修复方案
将占位符替换数组直接传给翻译函数__()的第二个参数即可,__()函数的第二个参数就是专门用来处理占位符替换的:
abort(404, __('errors.no-category-of-type', ['foo' => 'bar']));
调整后翻译函数会直接将:foo替换为bar再把最终文本传给abort()作为报错信息,输出结果就符合预期了。
内容的提问来源于stack exchange,提问作者Stroomschok
相关产品推荐
相关产品推荐

