在我的代码中,我创建了带有前缀的路线,该前缀是一门课程。
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')
就我而言,解决方案是在中间件中设置默认参数
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);
}
}
然后,我不需要更改视图。