Контроллеры ресурсов Laravel 4 - невозможно создать URL-адрес для именованного маршрута

Это очень просто, но, возможно, это невозможно сделать, кто знает ... я создал находчивый контроллер с именем books, но я хочу сгруппировать ресурс книг (и некоторые другие, которые я создал, например ресурс cd и т. д.) и префикс их с помощью MyStuff. как ниже

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.

Но, как вы можете видеть, я получаю сообщение об ошибке, говорящее

Не удалось сгенерировать URL-адрес для именованного маршрута «books.create», так как такой маршрут не существует.

если я просто попытаюсь запустить

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

все конечно нормально работает. нельзя ли сгруппировать, а потом префиксировать находчивые контроллеры?

Четное

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

не работает, я получаю то же сообщение об ошибке?


person user1997198    schedule 27.06.2013    source источник
comment
Кажется, у меня на днях было что-то похожее - работает ли маршрут MyStuff.books.create? Я думаю, что он добавляет префикс группы к содержащимся маршрутам.   -  person Ross    schedule 27.06.2013
comment
Предваряет префикс группы.   -  person Ross    schedule 27.06.2013
comment
Ао, вы предлагаете в моем контроллере посмотреть, могу ли я загрузить маршрут MyStuff.books.create, если да, то ответ на ваш вопрос - нет, это не работает! Спасибо за ваши предложения   -  person user1997198    schedule 27.06.2013
comment
Ах, я нашел ответ, есть много ссылок на «маршрут MyStuff.books.create», которых я не видел, мне придется просмотреть мой шаблонный код и обновить их с помощью префикса MyStuff.books.create из того, что есть. теперь это просто books.create. Спасибо большое   -  person user1997198    schedule 27.06.2013
comment
Нет проблем :) Просто чтобы вы знали, если вы попытаетесь использовать псевдоним для группы (например, ['as' => 'somethingelse']), вы попадете в эта ошибка   -  person Ross    schedule 27.06.2013


Ответы (4)


Вы используете 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

person Rob W    schedule 27.06.2013
comment
+1 это прекрасно работает! Также есть ли способ назвать маршруты для контроллеров ресурсов? Я пытался использовать то же соглашение, что и маршруты, но у меня это не сработало. - person Neo; 29.08.2013

Вы можете проверить все доступные маршруты в своем приложении, выполнив команду artisan php artisan routes

person ispal    schedule 21.08.2013

сделай это

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

person across    schedule 22.04.2014

Это должно работать

{{ route('MyStaff.books.index') }}
person Nikhil Agrawal    schedule 22.04.2014