Прежде всего, у меня есть Статья модель и статьи таблица в базе данных. Каждая статья может быть показана с использованием стандартной структуры URI Laravel: www.example.com/articles/5
(где 5
статья id
.). Каждая статья имеет пробкового поля (пробкового колонка в статьях таблицы), так и с Route Model Binding легко изменить это и есть слизняк вместо идентификатора в URI:SEO дружественных URL-адресов с категорией/подкатегориями/статьей slug? [Laravel]
В RouteServiceProvider.php Я просто добавил:
public function boot(Router $router)
{
parent::boot($router);
\Route::bind('articles', function($slug) {
return \App\Article::where('slug', $slug)->firstOrFail();
});
}
... и теперь я могу открыть статьи с: www.example.com/articles/this-is-some-slug
.
С другой стороны, каждый товар относится к одной категории. Например, допустим, что существуют следующие категории:
- Политика
- Спорт
- Футбол
- Теннис
- ATP
- WTA
- Культура
Я создал эти категории с помощью Baum (реализацию в Вложенные Установить шаблон для Laravel 5'-красноречивые в ОРМ). Таким образом, существует Category
модель и categories
таблицы в базе данных:
$table->increments('id');
$table->string('name');
$table->integer('parent_id')->nullable();
$table->integer('lft')->nullable();
$table->integer('rgt')->nullable();
$table->integer('depth')->nullable();
$table->timestamps();
Конечно, в articles
таблице есть столбец category_id
из Один-ко-многим отношения (одна статья принадлежит к одной категории, одного Категория может иметь много статей).
Все статьи, относящиеся к какой-либо категории, могут отображаться по адресу: www.example.com/articles/category/1
(где 1
- это id
). Если мы добавим slug
столбца в категории стола & набор маршрут Модели Binding:
\Route::bind('category', function($slug) {
return \App\Category::where('slug', $slug)->firstOrFail();
});
, то мы будем использовать слизняк вместо ID: www.example.com/articles/category/politics
(это будет отображать все изделия, относящиеся к категории политики).
Но я хотел бы иметь идентификаторы URI со следующей структурой:
www.example.com/sport/tennis/wta/article_slug
(/ категория/подкатегория/подкатегорию/article_slug)www.example.com/politics/article_slug
(/ категория/article_slug)
и так далее ...
Проблема в том, что я понятия не имею, как это сделать с Laravel. Возможно ли это? Как бы вы решили эту проблему?
Заранее благодарим за мой плохой английский.
SEO дружественные URL-адреса с категорией/подкатегориями/статьей slug?
Спасибо, я постараюсь сделать это, как вы объяснили здесь, и сообщите, если это сработало. Каково ваше мнение о сохранении полного пути в поле, может ли оно быть лучшим решением в случае глубоко вложенных категорий? Каковы недостатки по сравнению с решением, которое вы представили здесь ... Я имею в виду, каково ваше мнение. Еще раз спасибо и извините за моего бедного английского. – PeraMika
Я не уверен, что вы просите. Вы имеете в виду сохранение полного пути в переменной, чтобы перейти к контроллеру? Или хранится в базе данных? –