2014-10-19 2 views
2

Когда контроллер ресурсов создается в Laravel так:Laravel: переводить URL-ресурсов

Route::resource('foo', 'FooController'); 

Мы получаем URL, как:

  • обув/создать
  • Foo/магазин
  • foo/{id}/изменить
  • foo/{id}/update
  • ...

Я хотел бы перевести некоторые из этих маршрутов, чтобы получить что-то вроде:

  • Foo/нуво
  • Foo/магазин
  • Foo/{ID}/модификатор
  • foo/{id}/update

Этот код работает:

Route::resource('foo', 'FooController', array(
    'names' => array(
     'create' => 'nouveau', 
     'edit'  => 'modifier', 
     ... 
    ) 
)); 

Проблема здесь является edit маршрут: Я не знаю, как сделать это работает с {id} как foo/{id}/modifier.

ответ

-1

Я считаю, что вам просто не хватает пространства имен на маршрутах. Когда Laravel создает ресурс, он также создает пространство имен. Итак, вместо foo.create у вас будет foo.nouveau.

Route::resource('foo', 'FooController', array(
    'names' => array(
    'create' => 'foo.nouveau', 
    'edit' => 'foo.modifier' 
) 
)); 

Это также может быть referenced here в документации Laravel

0

Насколько я знаю, что это не возможно, используя метод resource. Вам нужно будет создать эти маршруты вручную с помощью trans/Lang::get, например:

Route::get('foo/{id}/'.trans('routes.edit'), '[email protected]'); 

Названия вы можете пройти здесь в 3-м параметрам являются для именованных маршрутов и не имеют ничего общего с URLs, если вы использовали что-то по имени маршруты, как вы показали, теперь вы можете использовать:

URL::route('nouveau', 1); 

и он будет генерировать foo/1/edit URL. Если вы не использовали здесь имена, которые вы должны использовать то:

URL::route('foo.edit',1); 

создать этот адрес, но это единственное различие, не URL влияния здесь.

1

Оформить заказ мой пакет: https://github.com/doitonlinemedia/TranslatableRoutes очень проста в использовании.

Вы можете назвать маршруты ресурсов, как:

TranslatableRoute::resource('recipe', 'recepten', 'RecipeController');

Если второй аргумент является переведенное имя и первым определяет имя вашего маршрута.

+0

Хотя это теоретически может ответить на вопрос, [было бы желательно] (// meta.stackoverflow.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. –

+0

Теперь это правильно, спасибо –

Смежные вопросы