Php 如何根据用户类型设置验证语言Laravel
我的应用程序中有三种用户类型,如果用户类型是user,则验证消息应为英语,否则如果是admin或公司,则应为日语 在我的Php 如何根据用户类型设置验证语言Laravel,php,laravel-5,Php,Laravel 5,我的应用程序中有三种用户类型,如果用户类型是user,则验证消息应为英语,否则如果是admin或公司,则应为日语 在我的app.php文件中,我执行以下操作: 'locale' => 'en', 'fallback_locale' => 'ja', 在我的web.php文件中: Route::group(['middleware' => 'auth:user'], function () { App::setLocale('en'); //user contr
app.php
文件中,我执行以下操作:
'locale' => 'en',
'fallback_locale' => 'ja',
在我的web.php
文件中:
Route::group(['middleware' => 'auth:user'], function () {
App::setLocale('en');
//user controllers
});
Route::group(['middleware' => 'auth:company'], function () {
App::setLocale('ja');
//company controllers
});
Route::group(['middleware' => 'auth:admin'], function () {
App::setLocale('ja');
//admin controllers
});
当我没有将admin的locale语言设置为ja
时,用户验证是英语的,管理员和公司也是如此。现在我将admin和company的locale设置为ja
,用户的验证消息现在也是日语。这是验证文件语言目录
我真的没有办法把这一条删掉,任何帮助都是非常感谢的。我在网上尝试了建议的解决方案,但没有任何效果。您可能应该添加某种语言切换支持 也许是这样: 或者,如果您想要更简单的解决方案,只需创建小型中间件,根据用户设置/访问角色等动态更改区域设置
<?php
namespace App\Http\Middleware;
use Closure;
use App;
use Illuminate\Support\Facades\Auth;
class SetLocaleForAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if(in_array(Auth::user()->email, ['admin@site.com','admin2@site.com','admin3@site.com'])) {
App::setLocale('ja');
}
}
return $next($request);
}
}
任何对此有想法的人都可以吗?谢谢你的建议,但我已经试着复制了,但仍然不起作用(@EemJee为什么它不工作?)更新了答案,添加了简单的中间件示例,应该适合您。只需添加管理员检查。结果相同。@EemJee您是否从web.php中的routes中删除了setLocale?是的,我想我必须对此进行更深入的研究。
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\SetLocaleForAdmin::class,
...
],
];