将全局变量从当前URL传递给LARLAVEL组路由 [英] Pass global variable to laravel group route from current url

查看:31
本文介绍了将全局变量从当前URL传递给LARLAVEL组路由的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有以下结构的路由组:

Route::prefix('admin/{w_id}')->middleware(['auth'])->as('weblog.')->group(function () {
    Route::get('/dashboard', [HomePageController::class, 'index'])->name('dashboard');
    Route::resource('/blogcategory', CategoryController::class);

});

在仪表板路径上,我的url中有w_id,当我想将用户重定向到博客类别路径(从任何地方)时,我应该在路由助手类中传递w_id,我需要从当前链接全局设置一些东西。

例如我使用此方法时:

'route' => 'weblog.blogcategory.store'

我收到如下错误:

Missing required parameters for [Route: weblog.blogcategory.store]
并且我应该手动将w_id参数传递给所有路由助手,我需要从当前页面的url设置全局w_id。 我正在为用户的博客开发完全独立的管理区,博客ID存在于所有URL中。

推荐答案

为了避免再次传递w_id,您需要使用URL::defaults(),它将为您的参数创建一个默认值。 您可以使用中间件传递默认值。

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesURL;

class SetDefaultWidForWeblogs
{
    public function handle($request, Closure $next)
    {
        URL::defaults(['w_id' => /* pass the default value here*/]);

        return $next($request);
    }
}

现在将中间件注册到app/Http/Kernel.php类中(请参阅更多说明here)

protected $routeMiddleware = [
    ...

    'pass_wid' => AppHttpMiddlewareSetDefaultWidForWeblogs::class,
];

然后使用该中间件 因此,对于您的路由组

Route::prefix('admin/{w_id}')->middleware(['auth', 'pass_wid'])->as('weblog.')->group(function () {
    Route::get('/dashboard', [HomePageController::class, 'index'])->name('dashboard');
    Route::resource('/blogcategory', CategoryController::class);

});

请参阅文档中的关于default values to Url

这篇关于将全局变量从当前URL传递给LARLAVEL组路由的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆