Action по умолчанию

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Timka
Сообщения: 20
Зарегистрирован: 2015.04.04, 12:14

Action по умолчанию

Сообщение Timka »

Здравствуйте.
Подскажите, пожалуйста, как сделать правильно в yii2 вызов вида и передача ему контента из некоего action'а по умолчанию в зависимости от url, хранимого в базе, не создавая при этом одноимённый action в контроллере?

На данный момент вызывается ошибка - 404

Пока приходит на ум переопределить в контроллере actionError и вызывать вид, передавая ему контент, что скорее всего неправильно.

Наверняка это обсуждалось не однократно и вопрос глупый, но что-то я в тупик зашёл и в поиске найти не удалось.
miha
Сообщения: 15
Зарегистрирован: 2014.05.09, 04:11

Re: Action по умолчанию

Сообщение miha »

Я бы тоже actionError переопределит, делается через конфиг. Посмотрите как оно в фреймворке реализовано (vendor\yiisoft\yii2\web\ErrorAction.php)
Если statusCode == 404 делаете запрос к БД, если там нет искомого урла продолжаете работать как с ошибкой, если есть - отрисовываете контент
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Action по умолчанию

Сообщение lynicidn »

miha писал(а):Я бы тоже actionError переопределит, делается через конфиг. Посмотрите как оно в фреймворке реализовано (vendor\yiisoft\yii2\web\ErrorAction.php)
Если statusCode == 404 делаете запрос к БД, если там нет искомого урла продолжаете работать как с ошибкой, если есть - отрисовываете контент
:shock: афигеть
miha
Сообщения: 15
Зарегистрирован: 2014.05.09, 04:11

Re: Action по умолчанию

Сообщение miha »

2lynicidn что, не красиво? Это вроде более "kiss" чем UrlManager переопределять.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Action по умолчанию

Сообщение lynicidn »

то что должно делать urlRule, вы хотите , чтобы делало ErrorAction - красиво?
miha
Сообщения: 15
Зарегистрирован: 2014.05.09, 04:11

Re: Action по умолчанию

Сообщение miha »

Да, загнул немного, у меня почему то было убеждение что нельзя написать правило которое ловит всё.
Можно так сделать:

Код: Выделить всё

    'urlManager' => [
        'class' => 'yii\web\UrlManager',
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            '<param:[0-9a-zA-Z\-]+>' => 'site/catch',
        ],
    ],
В контролере SiteController соответственно:

Код: Выделить всё

    public function actionCatch($param)
    {
        
    }
Timka
Сообщения: 20
Зарегистрирован: 2015.04.04, 12:14

Re: Action по умолчанию

Сообщение Timka »

Большое Вам спасибо, в особенности за приведённый пример.
То, что нужно!
Аватара пользователя
Insolita
Сообщения: 788
Зарегистрирован: 2011.06.06, 01:39
Контактная информация:

Re: Action по умолчанию

Сообщение Insolita »

Изобретатели велосипедов http://stuff.cebe.cc/yii2docs/yii-web-a ... All-detail
Ответить