@Arik

Как Yii2 перед 404 ошибкой проверить URL в контент страницах?

Советовали уже перечислить известные контроллеры, но они часто добавляются, как можно оставив стандартные механизм / проверить в контент-страницах перед тем как 404 показывать, т.е. последний будет PageController@view и если он кинет исключение 404, то только тогда показывать 404 ошибку

спасибо
  • Вопрос задан
  • 731 просмотр
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
В конфиге приложения можно переопределить экшен для ошибок и в нем описать любую логику.
'errorHandler' => [
            'errorAction' => 'somecontroller/someaction',
        ],

www.yiiframework.com/doc-2.0/yii-web-errorhandler....
Только не совсем понятно что вы имеете в виду под "проверить в контент-страницах".
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Isolution666
@Isolution666
Full-Stack Developer
Здравствуйте.
--
я так понимаю, что ссылки вы формируете не по id, а по некоему столбцу в БД, который имеет строковое значение.
так вот, если вы делаете get-запрос, то лучше это делать так:
// код action
...
public function actionName($link= ''){ // обращаемся к той переменной, которая выводит get
$model = Catalog::find()->where(['link' => $link])->one(); // обращаемся к БД с вопросом, есть ли такая запись
if ($link == NULL) {return $this->redirect(['catalog']);}  // если нету, то делаем редирект*
...

---
* - если вставить последнюю строчку, вы избегаете страницы 404, метода случайных подборов на несуществующие страницы, а следствие, мешаете хакерам с инекциями, пользователь остаётся на сайте, и может выбрать что-то другое, а не пытаться понять, что значат эти три цифры. Не выводится страница с пустыми гет запросами, что очень важно!!! Редиректить можно куда угодно, куда укажете.

Буду рад знать, что помог.
Ответ написан
Ваш ответ на вопрос

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

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