如何在Laravel中设置具有相同路径的不同控制器?

时间:2016-10-19 19:03:49

标签: php laravel-5.3

这是我的网络路线:

Route::group([
    'middleware' => 'proveedor_auth'
], function ($router) {
    require base_path('routes/custom/proveedor_routes.php');
});

Route::group([
    'middleware' => 'tendero_auth'
], function ($router) {
    require base_path('routes/custom/tendero_routes.php');
});

我尝试使用Route :: Group,但只能使用" tendero_auth"。

还有其他更好的方法吗?

proveedor_auth:

public function handle($request, Closure $next)
{

    if (Auth::guard('web_proveedor')->guest()) {
        if ($request->ajax()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest('log');
        }
    }

    return $next($request);
}

tendero_auth:

public function handle($request, Closure $next)
{

    if (Auth::guard('web_tendero')->guest()) {
        if ($request->ajax()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest('log');
        }
    }

    return $next($request);
}

或者有些图书馆可以帮我吗?

2 个答案:

答案 0 :(得分:0)

tendero_routes.php

Route::get('/', function () {
    return view('tendero.index');
});

proveedor_routes.php

Route::get('/', function () {
    return view('proveedores.index');
});

我的想法是稍后通过ResourceController更改匿名函数。这仅用于测试。

答案 1 :(得分:0)

显然第二个人会覆盖第一个。

Route::group(['middleware' => 'web'], function() {
    Route::get('/', function () {
        return view('tendero.index');
    });
});
Route::group(['middleware' => 'auth'], function() {
     Route::get('/', function () {
        return view('proveedores.index');
     });
});

在执行php artisan route:list时,只会列出第二个:

php artisan route:list
+--------+----------+-----+------+---------+------------+
| Domain | Method   | URI | Name | Action  | Middleware |
+--------+----------+-----+------+---------+------------+
|        | GET|HEAD | /   |      | Closure | auth       |
+--------+----------+-----+------+---------+------------+

这里似乎也证实了: https://laracasts.com/discuss/channels/laravel/multiple-routes-with-same-url-but-different-names

  

我认为网址已在其网址上编入索引并加以关键字 - 因此也是如此   第一个将被第一个完全覆盖。