【发布时间】:2014-08-25 08:26:35
【问题描述】:
如果我有两个路由组(用于路由的简单前缀),是否可以仅对每个组进行 Route::bind?
当我执行以下操作时:
Route::group( array('prefix'=>'pre1'), function(){
Route::bind('items', function( $value, $route ){
$item = Item::find( $value );
if( !$item ) App::abort( 404 );
return $item;
})
Route::resource('items', .... );
})
Route::group( array('prefix'=>'pre2'), function(){
//put bind for users here...
Route::bind('items', function( $value, $route ){
$user_id = $route->parameter('users')->getAttribute('id');
$item = Item::where('id', $value)->whereUserId( $user_id );
if( !$item ) App::abort( 404 );
return $item;
})
Route::resource('users.items', ....)
})
第一个绑定到 'items' 被最后一个声明的绑定覆盖。我会将“项目”重命名为其他名称,但嵌套的资源路由是由 laravel 自动生成的。
即第一条路线是
/items/{items}
第二个在哪里
/users/{users}/items/{items}
我会简单地重命名最终路由,但它们对于管理员使用的资源是有意义的,该管理员对一个资源具有权限,而用户对另一个资源具有权限。
【问题讨论】: