一个路由2控制器 - Laravel
我有一个路线,根据我需要调用适当的控制器的术语。 例如一个路由2控制器 - Laravel
Route::get('/{term}','Usercontroller')
Route::get('/{term}','brandcontroller')
我想实现这样的事情。该术语所保留的是一个名称(字符串),它基于该字符串属于用户表或品牌表。我如何使用Service Container来实现这样的功能。在决定采用哪条路线之前,根据术语是否属于USER类,应调用用户控制器,或者如果属于品牌类,则应采用品牌控制器路线。 任何帮助将不胜感激。 谢谢
创建中间件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
来创建中间件。
该命令将在您的app/Http/Middleware
目录中放置一个新的IsBrand
类。
<?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);
}
}
}
我认为你也应该给中间件的例子 –
这是有用的,完全可以工作,但我不想在中间件中访问数据库,除了中间件还有什么方法吗? –
@MuhammadImran我不知道,伙计。如果您发现,请告诉我。 – Ganesh
你应该使用另一个URL结构。例如'/ user/{term}',这会让bug更难以出现,并且会使整个网站的结构更加完整。 – FMashiro
我会建议,你为什么不去简单接近,/ brand/{term} – Ganesh
这只是一个例子,但问题仍然存在,基于我需要决定调用哪个控制器的术语。 –