Задать вопрос
@dev400

Вопрос по роутингу. Как убрать один из элементов?

Система работает так: "site.ru/news/horoshaya-novost"
Тоесть `news` это класс-контроллер, а `horoshaya-novost` это аргумент метода в этом классе.
Каким способом можно убрать `news` из адресной строки, если мы будем обращаться к конкретной новости?
Хотелось бы сделать по адресу "site.ru/news" вывод всех новостей, а по адресу "site.ru/horoshaya-novost" вывод конкретной новости
  • Вопрос задан
  • 275 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя danforth К ответам на вопрос (3)
@danforth
Вы сами писали код? Если да, то сами должны разобраться. А если нет, то нам нужно понять как у вас вообще устроена система. Кто инициализирует нужные контроллеры? Используете ли вы Router?

Я бы сделал так
Router::get("/{$params}", function(){
\Controller\News::init();
});


В самом классе News::init() проверяем $params. Если там ничего нету - News::indexAction();. Если есть, News::getActionByUri($params), и делаем запрос в базу вроде SELECT * FROM news WHERE uri = $params.
Естественно, фильтруйте запросы в базу.

P.S. Сам новичок, поэтому на приз за лучшую реализацию не претендую, но исходя из своих собственных знаний на данный момент - делал бы это как-то так.

UPD: у меня в вопросах есть тема про Router vs FrontController. Там есть касательно роутинга немного, вдруг что-то подчерпнёте.
Ответ написан
Комментировать