laravel - 如何将“前缀”和参数传递给组中的路由(Laravel 7 / 8)?
问题描述
我有下一个路线文件:
Route::prefix('{?lang}')->where(['lang' => '[a-zA-Z]{2}'])->middleware('locale')->group(function () {
Route::get('/news/{news}', [App\Http\Controllers\NewsController::class, 'show'])->name('news.show');
});
中间件是:
public function handle($request, Closure $next)
{
if ($request->method() == 'GET') {
$segment = $request->segment(1);
if (!in_array($segment, config('app.locales'))) {
$segments = $request->segments();
array_shift($segments);
$fallback = session('locale') ?: config('app.fallback_locale');
$segments = Arr::prepend($segments, $fallback);
return redirect()->to(implode('/', $segments));
}
session(['locale' => $segment]);
app()->setLocale($segment);
}
return $next($request);
}
如果我使用这样的路线(在 *.blade 文件中)
<a href='{{ route('home', app()->getLocale()) }}'>
我有下一个地址
<a href='/en/home/'>
但是我有应该传递给路由 /news/{news} 的参数,如果我接下来尝试:
<a href="{{ route('news.show', ['lang' => app()->getLocale(), 'news' => $new->slug]) }}">
我收到错误消息:
有人可以帮助我吗?我已经用了3个小时了......
解决方案
所以,
<a href="{{ route('news.show', [app()->getLocale(),$new->slug]) }}">
并在这条路线的控制者方法中
(string $lang, News $news)
就我而言,这是工作
推荐阅读
- html - 垂直居中的 Boostrap 容器问题
- javascript - 结合 indexOf 和 slice 的简单 JavaScript 代码初学者
- css - 位置:粘性,在 Chrome 中有效,但在 Firefox 中无效
- android - 从本机活动导航到 Xamarin 表单页面时如何获取页面的先前状态
- android - “帮助-->查找动作-->随机选择的动作”错误
- javascript - ReactJS - 无法读取状态对象上的 this.props.value
- java - EBean 增强 Maven
- java - Eclipse - 提取局部变量仅在范围内替换所有出现
- mysql - 如何检查sql中Where In子句中是否存在所有数组元素
- java - 如何在 Eclipse 中同时构建我的自定义 java 包和项目?