Route ::以相同的名称绑定到不同的组中?

瑞安·Q

如果我有两个路由组(用于路由的简单前缀),是否可以仅对那个组进行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”的第一个绑定被声明的最后一个覆盖。我将“ items”重命名为其他名称,但是laravel自动生成嵌套的Resource路由。

即第一条路线是

/ items / {items}

第二个在哪里

/ users / {users} / items / {items}

我只想简单地重命名结束路由,但对于管理员使用一种资源并使用另一种资源的管理员而言,它们对于所使用的资源而言是有意义的。

劳伦斯

有几件事。首先,您不需要此代码

  Route::bind('items', function( $value, $route ){
    $item = Item::find( $value );
    if( !$item ) App::abort( 404 );
    return $item;
  })

您只需

  Route::bind('items', 'Item')

如果在运行时无法绑定Item模型,它将自动抛出404。

其次,您将无法做您想做的事情(具有相同名称的两个不同绑定)-但是有两个选择。

选项1只是在您的路由文件中明确定义了所有路由,并且不要使用Route::resource()Phil Sturgeon的这篇文章很好地解释了为什么您应该手动定义每条路线。

第二个选项只是使用主项路由绑定,但向用户项添加过滤器。像这样的东西:

Route::group( array('prefix'=>'pre2', 'before' => 'user.item'), function(){

然后定义一个过滤器,检查该项目是否属于用户

Route::filter('user.item', function($route, $request)
{
    if ($route->parameter('item')->user_id !== Auth::user()->id)
    {
        App::abort(404);
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Route ::以相同的名称绑定到不同的组中?

来自分类Dev

当对不同模型使用相同结构时,Laravel Route Model绑定冲突

来自分类Dev

Laravel 4.1 Route :: controller在名称分隔的路由组中不起作用

来自分类Dev

重定向到Javascript中的先前ROUTE

来自分类Dev

将一些具有相同名称的文件绑定到R中的不同文件夹中

来自分类Dev

Route中的可选前缀部分

来自分类Dev

处理 Route 中的多个 ID

来自分类Dev

Apache Camel Route 中的动态 to()

来自分类Dev

Laravel 5 Route :: resource在嵌套Route :: group中

来自分类Dev

MVC route.MapRoute名称属性

来自分类Dev

Route53 的名称解析失败

来自分类Dev

将$ route注入到HTTP拦截器中

来自分类Dev

如何将组件名称从另一个组件的对象传递到React Router Dom中的Route?

来自分类Dev

Durandal子路线中的Route Not Found错误

来自分类Dev

Windows中的Google Maps Draw Route故障

来自分类Dev

route.php中的CodeIgniter路由链接

来自分类Dev

根据Rails中的route参数加载部分

来自分类Dev

在Route中带有参数的RedirectToAction

来自分类Dev

db seeder文件中的Laravel Route函数

来自分类Dev

从AngularJs Route中的URL删除Hashbang

来自分类Dev

Laravel 5.3+中的Route :: controller()替代

来自分类Dev

Zend Route在Chrome中不起作用

来自分类Dev

Route.php行中的ReflectionException

来自分类Dev

从SPA中的Vue.js访问$ route

来自分类Dev

GET Route Laravel中的URL参数

来自分类Dev

Laravel中route参数的默认值

来自分类Dev

Route 53中的SPF记录定义

来自分类Dev

在Laravel的Route类中获取方法?

来自分类Dev

在Rails 3中动态创建Route别名