Как сделать необязательный параметр в Action Yii 2

174
31 декабря 2021, 22:10

Помогите пожалуйста, нужно реализовать выполнение экшена с возможность не заполнения параметра ($url) чтобы был доступен такой адрес, site/news/, выполняется у меня же экшен только если параметр есть - site/news/parametrurl

Если параметра нет то выскакивает это сообщение об ошибке, можно ли как нибудь сделать параметр не обязательным, чтобы ее не было.

Answer 1

Ну например так:

[
    'pattern' => 'posts/<page:\d+>/<tag>',
    'route' => 'post/index',
    'defaults' => ['page' => 1, 'tag' => ''],
]

Подставить дефолтные значения в роутере.

Код взял с руководства на сайте yiiframework.com

Answer 2

Есть вариант установить значение по умолчанию null на уровне действия. В таком варианте лучше всего установить вместо where - filterWhere. При втором условие будет применяться в случае если $url не пустое. При первом запрос будет соответсвтенно искать значение null.

public function actionIndex($url = null)
{
    $model = News::find()
        ->filterWhere(['url' => $url])
        ->one();
    ...
}
READ ALSO
Часовой пояс php перевод времени

Часовой пояс php перевод времени

На сайте вывожу время публикации 16:12, как определить часовой пояс пользователя, который зашел и время конвертировать под его, например зашел...

61
Получить значения полей с класа, который екстендится, в базовом

Получить значения полей с класа, который екстендится, в базовом

У меня есть базовый класс BaseCommand примерно такого вида:

159
Кодировка текста из переменной

Кодировка текста из переменной

Пытаюсь вывести в html кнопки с текстом вот таким php-скриптом:

216