【发布时间】:2015-12-27 22:06:59
【问题描述】:
问题:我想解决 slug,如果 slug 已用作路由参数而不是 id。
尝试的解决方案: 我目前正在从我的中间件中的请求中获取一个参数,并尝试将其设置回请求。但是好像this没有传递给路由(是传递给后续的中间件)
路线:
Route::get('view_events/{gid}', array('as' => 'view_events','middleware' => ['auth','resolveGroupSlug','groupAdmin'], function($gid)
{
$user = Auth::user();
$group = Team::find($gid);
echo $gid;
//get this user's relationship to group
$group["team_user"] = Users_team::findComposite($gid,$user["id"]);
$events = Helpers::getEvents($gid,0);
return View::make('view_events', array('user' => $user, 'group' => $group, 'events' => $events));
}));
中间件(resolveGroupSlug):
public function handle($request, Closure $next)
{
//convert a string gid to id number
if (is_string ($request->gid)) {
$group = Team::where('slug', '=', $request->gid)->firstOrFail();
$request['gid'] = $group->id;
echo $request->gid;
}
return $next($request);
}
任何想法如何在中间件中设置路由参数?或者如果有更简单的方法来做到这一点。
(不,我不会将中间件代码复制粘贴到我需要的每个路由中!)
谢谢!!
【问题讨论】:
标签: laravel parameters laravel-5 middleware slug