不要用动态路由重写链接生成器

问题描述 投票:0回答:1

在我的代码中,我创建了带有前缀的路线,该前缀是一门课程。

Route::prefix('{course_slug}')->middleware('courses')->group(function () { ...

URL就是这样。

http://127.0.0.1/class/php/exams

没关系,但是现在我需要用一个参数重写我的视图。

route('class.exams.index', ['course' => 'php'])

我的问题是,可能不重写我的观点吗?当然可以在生成链接上注入参数,并且不更改视图上的代码吗?

然后保持代码不变。

route('class.exams.index')
php laravel routes prefix
1个回答
0
投票
我找到了解决问题的方法。解决方案在此帖子中进行了描述:https://laracasts.com/discuss/channels/laravel/default-route-parameters?page=1#reply=426656

就我而言,解决方案是在中间件中设置默认参数

namespace App\Http\Middleware; use Illuminate\Contracts\Routing\UrlGenerator; class SetRouteDomain { private $url; public function __construct(UrlGenerator $url) { $this->url = $url; } public function handle($request, Closure $next) { $course_default = Course::getDefault(); $this->url->defaults([ 'course_slug' => isset($request->course_slug) ? $request->course_slug : $course_default->slug, ]); return $next($request); } }

然后,我不需要更改视图。
© www.soinside.com 2019 - 2024. All rights reserved.