laravel 本地化设置默认区域设置参数替换其他参数
laravel localization set the default locale parameter replacing other parameters
我是 laravel 的新手。当我从 localization.php 设置默认语言环境并单击任何数据列表编辑按钮时,它会将 id 变量替换为语言环境值,例如 (en/ ur/ sd).
然后我从 Localization.php
中删除了默认的语言环境参数
我会得到缺少的参数:关于
web.php
Route::group([
'prefix' => '{locale}',
'where' => ['locale' => '[a-zA-Z]{2}'],
'middleware' => 'Localization'
], function() {
Route::get('/', function () {
return redirect(route('home'));
});
Route::resource('/about', AboutController::class)->middleware('auth');
});
kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
// Permission
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
'Localization' => \App\Http\Middleware\Localization::class,
];
Localization.php
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
URL::defaults(['locale' => $request->segment(1)]);
app()->setLocale($request->segment(1));
return $next($request);
}
}
AboutController.php编辑功能
public function edit($id)
{
$singleRow = About::find($id);
$allRows = About::all();
return view('about', compact('allRows','singleRow'));
}
app.php
'locale' => 'en',
'fallback_locale' => 'en',
'available_locales' => [
'en',
'sd',
'ur',
],
about.blade.php 当我点击此处编辑数据时编辑部分
如果我尝试不使用 app()->getLocale() 并且语言环境参数是从 Localization.php 分配的
我会将 id 替换为选定的区域设置语言,例如 en、sd、ur URL 中给出的任何内容,例如 http://127.0.0.1:8000/en/about/1/edit
第一次尝试使用上述默认语言环境参数
<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a>
第二次尝试不使用上述语言环境参数
<a href="{{ route('about.edit', ['locale'=> app()->getLocale(), 'about' => $about->id]) }}" class="btn btn-primary">Edit</a>
这次我设置了上面提到的 Localization.php 的默认语言环境,并从我的标签中删除了语言环境参数
<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a>
当我点击编辑按钮时,我在浏览器中看到了这个
已将 return 更改为 dd
public function edit($id)
{
dd($id);
$singleRow = About::find($id);
$allRows = About::all();
return view('about', compact('allRows','singleRow'));
}
这次我评论了来自Localization.php的语言环境参数,并在我的标签中添加了语言环境参数
<a href="{{ route('about.edit', ['locale'=> app()->getLocale(), 'about' => $about->id]) }}" class="btn btn-primary">Edit</a>
Localization.php
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
URL::defaults(['locale' => $request->segment(1)]);
app()->setLocale($request->segment(1));
return $next($request);
}
}
我遇到错误的语言切换器。
在 master.blade.php
@foreach (config('app.available_locales') as $locale)
<li class="dropdown messages-menu">
<a class="nav-link"
href="{{ route(\Illuminate\Support\Facades\Route::currentRouteName(), ['locale'=>$locale,0]) }}"
@if (app()->getLocale() == $locale) style="font-weight: bold; text-decoration: underline" @endif>{{ strtoupper($locale) }}</a>
</li>
@endforeach
这里 master.blade.php 我将 $locale 设置为 ['locale'=> $locale, 0]
我不知道第二个参数是为什么需要但它工作正常
并且我已经将控制器编辑功能更改为
public function edit($ignore='', $id)
{
$singleRow = About::find($id);
$allRows = About::all();
return view('about', compact('allRows','singleRow'));
}
这里我在点击编辑时得到了 id
<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a>
我是 laravel 的新手。当我从 localization.php 设置默认语言环境并单击任何数据列表编辑按钮时,它会将 id 变量替换为语言环境值,例如 (en/ ur/ sd).
然后我从 Localization.php
中删除了默认的语言环境参数我会得到缺少的参数:关于
web.php
Route::group([
'prefix' => '{locale}',
'where' => ['locale' => '[a-zA-Z]{2}'],
'middleware' => 'Localization'
], function() {
Route::get('/', function () {
return redirect(route('home'));
});
Route::resource('/about', AboutController::class)->middleware('auth');
});
kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
// Permission
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
'Localization' => \App\Http\Middleware\Localization::class,
];
Localization.php
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
URL::defaults(['locale' => $request->segment(1)]);
app()->setLocale($request->segment(1));
return $next($request);
}
}
AboutController.php编辑功能
public function edit($id)
{
$singleRow = About::find($id);
$allRows = About::all();
return view('about', compact('allRows','singleRow'));
}
app.php
'locale' => 'en',
'fallback_locale' => 'en',
'available_locales' => [
'en',
'sd',
'ur',
],
about.blade.php 当我点击此处编辑数据时编辑部分
如果我尝试不使用 app()->getLocale() 并且语言环境参数是从 Localization.php 分配的 我会将 id 替换为选定的区域设置语言,例如 en、sd、ur URL 中给出的任何内容,例如 http://127.0.0.1:8000/en/about/1/edit
第一次尝试使用上述默认语言环境参数
<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a>
第二次尝试不使用上述语言环境参数
<a href="{{ route('about.edit', ['locale'=> app()->getLocale(), 'about' => $about->id]) }}" class="btn btn-primary">Edit</a>
这次我设置了上面提到的 Localization.php 的默认语言环境,并从我的标签中删除了语言环境参数
<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a>
当我点击编辑按钮时,我在浏览器中看到了这个
已将 return 更改为 dd
public function edit($id)
{
dd($id);
$singleRow = About::find($id);
$allRows = About::all();
return view('about', compact('allRows','singleRow'));
}
这次我评论了来自Localization.php的语言环境参数,并在我的标签中添加了语言环境参数
<a href="{{ route('about.edit', ['locale'=> app()->getLocale(), 'about' => $about->id]) }}" class="btn btn-primary">Edit</a>
Localization.php
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
URL::defaults(['locale' => $request->segment(1)]);
app()->setLocale($request->segment(1));
return $next($request);
}
}
我遇到错误的语言切换器。 在 master.blade.php
@foreach (config('app.available_locales') as $locale)
<li class="dropdown messages-menu">
<a class="nav-link"
href="{{ route(\Illuminate\Support\Facades\Route::currentRouteName(), ['locale'=>$locale,0]) }}"
@if (app()->getLocale() == $locale) style="font-weight: bold; text-decoration: underline" @endif>{{ strtoupper($locale) }}</a>
</li>
@endforeach
这里 master.blade.php 我将 $locale 设置为 ['locale'=> $locale, 0] 我不知道第二个参数是为什么需要但它工作正常
并且我已经将控制器编辑功能更改为
public function edit($ignore='', $id)
{
$singleRow = About::find($id);
$allRows = About::all();
return view('about', compact('allRows','singleRow'));
}
这里我在点击编辑时得到了 id
<a href="{{ route('about.edit', ['about' => $about->id]) }}" class="btn btn-primary">Edit</a>