Laravel по-русски

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

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

#1 04.12.2017 16:13:52

Как лучше организовать структуру урлов в Laravel?

Здравствуйте. Как лучше организовать структуру урлов в Laravel?

Сейчас в самописной админке есть: Страницы, записи.

При создании страницы можно выбрать тип ее, 1. просто страница 2.Страница для записей

При создании записи, мы выбираем на какую страницу(с типом «Страница для записей») уйдет запись. Создать запись без Страница с типом «Страница для записей» не получиться.

Я не хочу видеть в URl вот такие

test.com/pages/page_1
test.com/posts/post_1
test.com/category/category_1

PHP
Route::get('/{slug}''ContentController@get')->where('slug','^[a-zA-Z0-9-_\/]+$');

Этот роут обеспечивает выдачу URL вот в такой вид

test.com/page_1/post_1
test.com/page_1
test.com/category_1/product_1

Код самого кнотроллера

PHP
//разбивает url на массив
$content explode('/'$slug);
//Берет последний элемент массива
$end_slug end($content);

//Если размер массива $content равен 1, то мы делаем выборку из таблицы Page т.к. это не может запись
if(count($content) == 1)
{
$data Page::where('slug''='$end_slug)->where('visibility''='true)->first();

if(
$data == null)
{
abort(404);
}

//Указываем в какую view уйдут данные
$view 'page';
}
//Если размер массива $content больше 1 , то мы делаем выборку из таблицы Post т.к. это запись, потому что пока нельзя указывать родительскую страницу для другой страницы
else{
$data Post::where('slug''='end($content))->where('visibility''='true)->first();

if(
$data == null)
{
abort(404);
}

//Указываем в какую view уйдут данные
$view 'post';
}

Пока работает нормально, НО когда добавяться категории для товаров, товары сами и не знаю там, подкатегории, бренды для категории это будет разростаться и будут не нужные обращения к бд.

К примеру добавиться модель КАТЕГОРИЯ
И теперь, когда человек будет обращаться на такой урл

test.com/category_1

Размер массива $content будет равен 1, и это может быть или СТРАНИЦА или КАТЕГОРИЯ.
Сначала я обращусь к таблице Page и если не найду там строку с таким slug то обращусь к таблице Category если найду, выдам, если нет выдам 404.

Что можете посоветовать? Как лучше сделать? Что бы URL был красивый и понятный.

Возможно сделать одну таблицу TP и в ней хранить Страницы, Записи, Категории, Товары и сделать там поля, которые есть у каждой модели к примеру name, slug, text и сделать еще одну таблицу TP_options и та хранить уже все поля не общие, но в этому случае будет много NULL у записи к примеру и т.д.

Изменено fenix1996l (04.12.2017 16:17:40)

Не в сети

#2 04.12.2017 19:35:20

Re: Как лучше организовать структуру урлов в Laravel?

https://goo.gl/cgUSck сотня уроков + создание 2х проектов. возможно вам будет полезно
п.с. все таки не могу удержаться и не спросить. а вы в курсе, что можно параметры передавать вот так:

Route::post('article_add_comm/{id}/parent_id/{parent_id?}/to_comm_id/{otvet_na_comm_id?}', 'CommentController@article_add_comm')->name('article_add_comm');

$view = 'page';
и
$view = 'post';
просто агонь.
а скриншот вашего добра узреть можно? просто для наглядности ситуёвины

Изменено sam (04.12.2017 19:41:24)

Не в сети

#3 05.12.2017 11:50:50

Re: Как лучше организовать структуру урлов в Laravel?

sam
А как тогда лучше сделать структуру урлов, что бы не было этих лишних слов типа page, post, category, product? Что бы урлв были чистыми

Не в сети

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