@Arik

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

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

спасибо
  • Вопрос задан
  • 734 просмотра
Решения вопроса 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, метода случайных подборов на несуществующие страницы, а следствие, мешаете хакерам с инекциями, пользователь остаётся на сайте, и может выбрать что-то другое, а не пытаться понять, что значат эти три цифры. Не выводится страница с пустыми гет запросами, что очень важно!!! Редиректить можно куда угодно, куда укажете.

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

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

Похожие вопросы