Как настроить роуты как на Wordpress?

Переношу сайт с WP на Laravel (БД), основной задачей ставится сохранение всех путей для постов и категорий. Все категории и посты, не имеют какого-нибудь "якоря", типа: project.com/categories/{category-name} или project.com/posts/{post-name}.
В данном проекте все категории имеют вид: project.com/{category-name}, а посты: project.com/{post-name}.

Каким образом вообще пишется контроллер, чтобы по slug можно было выдергивать из БД категории и посты, притом чтобы это работало и при условии, что может существовать категория и пост с одинаковым slug?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@kandrash
Кратко о себе
Тут скорее всего дополнительными проверками в контроллере проще всего обойтись.
// Роут для всех
Route::get('/{slug}', 'ContentControler@content');

// Контроллер
public function content(string $slug)
{
    $category = Category::whereSlug($slug)->first();

    if ($category) {
        // Возвратили категорию
    }

    // Сюда попали если категории нет
     $post = Post::whereSlug($slug)->firstOrFail();

    // Возвратили пост
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы