URL менеджер успокоительный API в YII2

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

Я сделал много, но я не смог найти что-то полезное!
заранее спасибо!

-1

Решение

С этими правилами:

'<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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]