Laravel 8波斯语验证错误前端不显示问题求助
Laravel 8 波斯语本地化错误显示修复方案
1. 修复视图转义问题
波斯语字符属于阿拉伯语系,Blade默认的{{ }}语法会自动转义特殊字符,导致错误消息无法正常显示。将视图中错误输出的语法替换为{!! !!},避免转义:
@if($errors->any()) <div class="alert alert-danger"> <ul> @foreach($errors->all() as $error) <li>{!! $error !!}</li> @endforeach </ul> </div> @endif
2. 校验翻译文件格式
检查resources/lang/fa/validation.php的规则定义,确保占位符和语法正确:
- 规则字符串要正确使用
:attribute占位符,比如:'required' => ':attribute الزامی است.', - 确认
attributes数组中的属性名称是正确的波斯语,比如:'attributes' => [ 'name' => 'نام', 'email' => 'ایمیل', // 其他属性对应关系 ],
3. 清理框架缓存
旧的视图、配置缓存可能导致新翻译不生效,执行以下命令清理:
php artisan view:clear php artisan cache:clear php artisan config:clear
4. 确保Locale全局生效
除了在config/app.php中设置'locale' => 'fa',可以通过中间件强制全局应用波斯语Locale:
- 创建
SetLocale中间件:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class SetLocale { public function handle(Request $request, Closure $next) { app()->setLocale('fa'); return $next($request); } }
- 在
app/Http/Kernel.php的web中间件组中添加该中间件,确保每个请求都使用波斯语环境。
5. 检查控制器错误传递逻辑
确认控制器中正确将验证错误传递到视图:
$validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); }
内容的提问来源于stack exchange,提问作者hosein in jast
相关产品推荐
相关产品推荐

