Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.02.2015 23:18:27

Егор

Создание ЧПУ

Какой самый эффективный способ создания ЧПУ для каталога.

Структура примерно такая

- Каталог
  - Категория
    - Позиция

Хотелось бы что бы и ссылка выглядела как

/{catalog_slug}/{category_slug}/{item_slug}

Достаточно ли для этого в роутинге прописать

Route::get('/{catalog_slug}', 'CatalogController@show');
Route::get('/{catalog_slug}/{category_slug}}', 'CategoryController@show');
Route::get('/{catalog_slug}/{category_slug}/{item_slug}', 'ItemController@show');

#2 12.02.2015 02:20:47

Re: Создание ЧПУ

Достаточно.
Но

Route::get('/{catalog_slug}', 'CatalogController@show');

под этот шаблон может много чего лишнего попасть.
Например:
site.ru/catalog
site.ru/article
site.ru/contacts
И обработку эти маршрутов будет брать на себя CatalogController@show.
Хотя если на сайте будет только каталог то нормально.

Не в сети

#3 12.02.2015 14:08:51

Егор

Re: Создание ЧПУ

Спасибо.

Я так понимаю, что если сначала прописать роуты для кейсов, то ничего страшного не произойдет.

    Route::get('/blog','BlogController@index');
    Route::get('/{id},''OtherController@show');
    Route::get('/{catalog_id}/{item_id},''OtherController@show');

Только в таком случае получается, что отобразится страница item_id, все зависимости от catalog_id.

#4 13.02.2015 11:56:45

Re: Создание ЧПУ

Егор пишет:

Только в таком случае получается, что отобразится страница item_id, все зависимости от catalog_id.

Я так понимаю имелось в виду Вне зависимости? Если так, то все зависит от того как будете выбирать.

	public function show($categorySlug, $projectId) {

		$project = Category::where('slug', $categorySlug)->firstOrFail()
			->projects()->findOrFail($projectId);
		
		// ...
	}

Не в сети

#5 20.02.2015 22:06:55

Re: Создание ЧПУ

Да, действительно. Такой выбор больше подходит. Спасибо.

Не в сети

#6 04.03.2015 10:46:12

Николай

Re: Создание ЧПУ

Существует ли какая-нибудь автоматическая генерация слагов (slug) в laravel? Как можно автоматически формировать допустим из названия статьи "Название статьи" слаг "Nazvanie-stati"?

#7 04.03.2015 12:20:30

Re: Создание ЧПУ

Николай, для кириллицы встроенного ничего нет. Для строки на латинице есть Str::slug(). А для кириллицы нужно использовать дополнения. Например, вот: https://github.com/ivanlemeshev/laravel4-cyrillic-slug

Не в сети

Подвал раздела