我有一条路线,基于我需要调用适当控制器的术语。 例如
Route::get('/{term}','Usercontroller')
Route::get('/{term}','brandcontroller')
我想实现这样的事情。该术语包含的是名称(字符串),基于此字符串,它属于用户表或品牌表。我怎样才能使用Service Container实现这样的目标。在决定采用哪条路线之前,如果它属于USER类,则应该调用usercontroller,或者如果它属于品牌类,则应该采用brandcontroller路由。 任何帮助将不胜感激。 感谢
答案 0 :(得分:3)
创建中间件IsBrand,&检查品牌是否存在?
Route::group(['middleware' => 'IsBrand'], function () {
Route::get('{term}', 'BrandController');
});
同样适用于IsUser。
Route::group(['middleware' => 'IsUser'], function () {
Route::get('{term}', 'UserController');
});
使用php artisan make:middleware IsBrand
创建中间件。
此命令将在IsBrand
目录中放置一个新的app/Http/Middleware
类。
<?php
namespace App\Http\Middleware;
use Closure;
class IsBrand
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (App\Brand::where('brand_name', $term)->count())) {
return $next($request);
}
}
}