Автор Тема: Создаю дополнительный метод в CategoryController.php  (Прочитано 426 раз)

18 Июль 2019, 17:23:30
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Делаю метод, чтобы при наличии определенных наборов символов в строке, выдавалась 404 ошибка на странице.
Причем нужно отдавать 404 ошибку без редиректа.
Пытаюсь сделать так, в итоге 404 http статус отдает, а вот на экране пустая страница.
Tools::display404Error();
Как сделать чтобы и 404 статус отдавал и страницу 404 показывало?
18 Июль 2019, 17:35:06
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Условия не выполнимы. В престашопе всегда редирект на 404 будет.
18 Июль 2019, 18:18:43
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 1810
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Как сделать чтобы и 404 статус отдавал и страницу 404 показывало?
Tools::redirect('index.php?controller=404');
18 Июль 2019, 18:29:01
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');
include('свой контроллер для 404 страницы.php');
чтобы и 404 статус отдавал и страницу 404 показывало и не использовать базовый метод prestashop
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Июль 2019, 00:11:59
Ответ #4
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем спасибо за ответы.

Нашел в классе ToolsCore в php doc описание к методу display404Error() .
В нем указано:
@deprecated as of 1.5 use Controller::getController('PageNotFoundController')->run();

В общем в CategoryController.php  для вывода 404 страницы, без редиректов и с 404 http статусом, хорошо подходит такой код:
header('HTTP/1.1 404 Not Found');
        header('Status: 404 Not Found');
        Controller::getController('PageNotFoundController')->run();