【问题标题】:Laravel 4 resource controllers - Unable to generate a URL for the named routLaravel 4 资源控制器 - 无法为命名路由生成 URL
【发布时间】:2013-06-25 04:31:55
【问题描述】:

这个很简单,但谁知道可能做不到...我创建了一个名为 books 的资源丰富的控制器,但我想对图书资源(以及我创建的其他一些资源,如 cd 资源等)进行分组并为它们添加前缀与我的东西。如下所示

Route::group(array('prefix' => 'MyStuff','before' => 'auth','after' => 'log'), function()
{
    Route::resource('books', 'BooksController');
});
//Unable to generate a URL for the named route "books.create" as such route does not exist.

但是正如你所看到的,我收到一条错误消息说

无法为命名路由“books.create”生成 URL,因为这样的路由不存在。

如果我只是尝试运行

Route::resource('books', 'BooksController');

当然一切正常。你不能对资源丰富的控制器进行分组然后加上前缀吗?

均匀

Route::resource('mystuff/books', 'BooksController');

不起作用,我收到相同的错误消息?

【问题讨论】:

  • 我想我前几天也遇到过类似的情况 - MyStuff.books.create 的路线有效吗?我认为它将组前缀附加到包含的路由。
  • 预置组前缀,而不是。
  • ao 你在我的控制器中建议我看看我是否可以加载路由 MyStuff.books.create 如果是这样,你的问题的答案是否定的,它不起作用!感谢您迄今为止的建议
  • 啊,我找到了答案,我没有看到很多对“路由 MyStuff.books.create”的引用,我将不得不检查我的样板代码并使用前缀更新它们MyStuff.books.create 来自现在的books.create。非常感谢您
  • 没问题 :) 只是让您知道,如果您尝试为某个组设置别名(即['as' => 'somethingelse']),您将落入this bug

标签: resources laravel controllers


【解决方案1】:

你在使用URL::action吗?试试看:URL::action('BooksController@METHODNAME')

见:http://laravel.com/api/source-class-Illuminate.Routing.UrlGenerator.html#230-264

请记住,资源控制器有几种类型的操作和路由名称:http://laravel.com/docs/controllers#resource-controllers

【讨论】:

  • +1 这很好用!还有一种方法可以为资源控制器命名路由吗?我尝试使用与路由相同的约定,但它对我不起作用。
【解决方案2】:

您可以通过运行 artisan 命令php artisan routes 来检查应用中的所有可用路线

【讨论】:

    【解决方案3】:

    这样做

    {{ route('MyStaff.books.index }}

    【讨论】:

      【解决方案4】:

      这应该可行

      {{ route('MyStaff.books.index') }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-20
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        • 2013-07-07
        • 2023-03-11
        • 2016-11-03
        • 1970-01-01
        相关资源
        最近更新 更多