1. как сделать этот URL
http://localhost/travia-api/backend/web/v1/flight?id=4FR996IN2F829M
к этому
http://localhost/travia-api/backend/web/v1/flight/4FR996IN2F829M
это мой конфиг
'urlManager' => [
'class' => 'yii\web\UrlManager',
'showScriptName' => false,
'enablePrettyUrl' => true,
'rules' => [
'class' => 'yii\rest\UrlRule',
'controller' => 'flight',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>',
'<controller:[\w\-]+>/<action:[\w\-]+>' => '<controller>/<action>',
'v1/<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => 'v1/<controller>/<action>',
'v1/<controller:[\w\-]+>/<action:[\w\-]+>' => 'v1/<controller>/<action>',
'module/<module:[\w\-]+>/<controller:[\w\-]+>/<action:[\w\-]+>' => '<module>/<controller>/<action>',
],
и это мой htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
2.и когда я хочу добавить новый шаблон, я добавляю эти строки в конфигурацию
extraPatterns[
'GET search' => 'search'
]
после этого у меня есть ошибка, как эти
Неизвестное свойство — yii \ base \ UnknownPropertyException
Установка неизвестного свойства: yii \ web \ UrlRule :: GET search
Я сделал много, но я не смог найти что-то полезное!
заранее спасибо!
С этими правилами:
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>',
Вы получаете только цифры наid
попробуйте получить слова тоже:
'<controller:\w+>/<id:\d+\w+>' => '<controller>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+\w+>' => '<controller>/<action>/view',
'<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+\w+>' => '<controller>/<action>',
Потому что вы хотите цифры и слова:
http://localhost/travia-api/backend/web/v1/flight/4FR996IN2F829M
Я не знаю, как правильно решить второй вопрос, но попробуйте это:
extraPatterns[
'GET{id}' => 'search'
]
я видел это Вот
РЕДАКТИРОВАТЬ:
Измените эти правила:
'v1/<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => 'v1/<controller>/<action>',
'v1/<controller:[\w\-]+>/<action:[\w\-]+>' => 'v1/<controller>/<action>',
За это:
'v1/flight/<id:[\d+\w+]>' => 'v1/flight/actionName',
'v1/flight/<action:\w+' => 'v1/flight/<action>',
И сетить в качестве первых правил. Не забудьте изменить actionName
Других решений пока нет …