【问题标题】:Laravel Route Group Prefixing and BreadcrumbsLaravel 路由组前缀和面包屑导航
【发布时间】:2015-05-29 14:53:15
【问题描述】:

我正在使用路由前缀,但遇到了一个问题,不知道如何解决。

第一个实际问题是,我可以让我的链接与添加前缀之前的链接相同吗?

例如,以前我有链接,我的路线是这样的。

<a href="{{ route('users.edit', $user->id) }}">Edit</a>

Route::resource('users', 'UsersController');

但是现在我在一组路由中添加了前缀,这样链接就会显示为 mysite.com/backstage/users。

Route::group(array('prefix' => 'backstage'), function()
{
    Route::resource('users', 'UsersController');
});

所以现在有了我所有的观点,我是否必须浏览每一个并编辑所有链接,使它们看起来像这样,或者我可以做一些不同的事情,以便我可以以不同的方式处理这种情况。

<a href="{{ route('backstage.users.edit', $user->id) }}">Edit</a>

我还担心我的应用程序的面包屑。

<?php

Breadcrumbs::register('users.index', function($breadcrumbs) {
    $breadcrumbs->parent('home');
    $breadcrumbs->push('Users', route('backstage.users.index'));
});

我必须包括后台还是可以不保留?

【问题讨论】:

  • 请参阅 stackoverflow.com/questions/25290229/… 以获取有关您命名路线的一些帮助/问题。
  • 我想知道我的根本问题是我的路由文件还是我的面包屑文件。我应该如何处理这个问题,以便我可以在一个文件中处理所有未来的更改,并限制未来出现的问题。
  • 我个人回避Route::resource,赞成明确定义我的路线(包括我可能使用的任何名称)。
  • 如果您能够以回答的形式向我展示您将如何处理我的情况的示例,这将大大有助于我理解我需要做些什么来纠正我的错误并防止将来会出现此类问题。

标签: php laravel laravel-4


【解决方案1】:

我知道的唯一方法是将名称作为第三个参数传递,例如:

Route::resource('users', 'UsersController',
['names'=>['index'=>'users', 'store'=>'users.store']]);

很多人避免使用资源路由。菲尔在这里解释了一些推理Beware the route to evil。基本上他的意思是,如果你或其他人稍后再回来弄清楚,这可能是一场噩梦。您经常将特殊情况放在资源之前,因此它们在路由中首先受到打击,整个事情变得一团糟。

【讨论】:

  • 很好,但是否需要做任何额外的事情,因为这是在闭包内分组以向组添加前缀?
  • @user3732216 没有什么额外的。这就像做Route::get('users', ['as'=&gt;'users.index', 'uses'=&gt;'UsersController@index']) 但对于每个资源。因此,因为路由被命名,所以 URI 是什么并不重要
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多