【问题标题】:Don't rewrite link generator with dinamic route不要用动态路由重写链接生成器
【发布时间】:2020-07-13 12:12:40
【问题描述】:

在我的代码中,我创建了一个带有前缀的路线,这个前缀是课程的一部分。

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

网址是这样的。

http://127.0.0.1/class/php/exams

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

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

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

然后保持代码不变。

route('class.exams.index')

【问题讨论】:

    标签: php laravel routes prefix


    【解决方案1】:

    我找到了解决问题的方法。解决方案在这篇文章中描述: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);
        }
    }
    

    那我就不用换视图了。

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 2018-05-11
      • 1970-01-01
      • 2018-07-28
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      相关资源
      最近更新 更多