Хорошо, я перевожу приложение с yii 1.1 на yii 2, к сожалению, я не могу понять, как использовать дополнительные параметры в моих URL-маршрутах. Даже когда я устанавливаю значения по умолчанию в urlmanager в конфигурации, я не могу указать второй параметр без первого, или я получаю ошибку 404.
Есть ли способ репликации необязательных правил параметров URL, таких как
array( '<controller:\w+>/<action:\w+>?(/<status>)?',
'pattern' => '<controller>/<action>'
),
в yii 2?
Это не очень ясно в документации (см. http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html), но вот ответ:
По умолчанию все параметры, объявленные в правиле, являются обязательными. Если запрошенный URL-адрес не содержит определенного параметра или URL-адрес создается без определенного параметра, правило не будет применяться. Чтобы сделать некоторые параметры необязательными, вы можете настроить по умолчанию свойство правила. Параметры, перечисленные в этом свойстве, являются необязательными и будут принимать указанные значения, если они не предоставлены.
Таким образом, ваш маршрут должен быть выражен как:
array(
'pattern' => '<controller:\w+>/<action:\w+>/<status>',
'route' => '<controller>/<action>',
'defaults' => array('status' => '<a default value for status>')
)
Других решений пока нет …