defaultRoute совместно с Rest Api

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
slite
Сообщения: 26
Зарегистрирован: 2014.11.04, 07:53

defaultRoute совместно с Rest Api

Сообщение slite »

Есть yii2 с рабочей службой rest api.
Так же есть контроллеры отображающиеся как обычный сайт

Проблема следующая. Хочу поставить контроллер по умолчанию.
Пишу в конфигу 'defaultRoute' => 'mains'

Не сработало.

Ниже мои кофниг urlManager

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

        'urlManager' => [
            'showScriptName' => false,
            'enableStrictParsing' => true,
            'enablePrettyUrl' => true,
            'rules' => array([
                'class' => 'yii\rest\UrlRule',
                'controller' => [
                    'main',
                    'site'
                ],
                'extraPatterns' => [
                    'POST searchcount' => 'searchcount',
                    'POST searchresult' => 'searchresult',
                ]
            ]),
        ],
Что странно с данным вариантом rules работает в целом без ошибок.
Но стоит убрать array() перед rules
и сделать так

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

        'urlManager' => [
            'showScriptName' => false,
            'enableStrictParsing' => true,
            'enablePrettyUrl' => true,
            'rules' => [
                'class' => 'yii\rest\UrlRule',
                'controller' => [
                    'main',
                    'site'
                ],
                'extraPatterns' => [
                    'POST searchcount' => 'searchcount',
                    'POST searchresult' => 'searchresult',
                ]
            ],
        ],
Выходит ошибка и это меня больше всего удивляет.

yii\base\UnknownPropertyException:
Setting unknown property: yii\web\UrlRule::0
Последний раз редактировалось slite 2018.07.27, 13:04, всего редактировалось 1 раз.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: С array или без

Сообщение skynin »

array([
это
[[
а не
[
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: С array или без

Сообщение andku83 »

rules - это массив правил, у вас же

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

            [
                'class' => 'yii\rest\UrlRule',
                'controller' => [
                    'main',
                    'site'
                ],
                'extraPatterns' => [
                    'POST searchcount' => 'searchcount',
                    'POST searchresult' => 'searchresult',
                ]
            ]
это одно правило, поэтому его нужно обернуть еще в одни скобки
slite
Сообщения: 26
Зарегистрирован: 2014.11.04, 07:53

Re: С array или без

Сообщение slite »

аа все понял.

А насчет defaultRoute не можете подсказать.
Почему не работает?
я бы хотел чтобы main была страницей по умолчанию?
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: С array или без

Сообщение skynin »

slite писал(а): 2018.07.27, 12:10 А насчет defaultRoute не можете подсказать.

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

  // ...
  'defaultRoute' => '/модуль/контроллер_модуля/нужный_action',
  // ...
видите разницу с:
Пишу в конфигу 'defaultRoute' => 'mains'
? ;)
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: С array или без

Сообщение andku83 »

skynin писал(а): 2018.07.27, 12:16

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

  // ...
  'defaultRoute' => '/модуль/контроллер_модуля/нужный_action',
  // ...
при наличии:

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

    'enableStrictParsing' => true,
еще в rules необходимо добавить:

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

        '/' => 'модуль/контроллер_модуля/нужный_action',
slite
Сообщения: 26
Зарегистрирован: 2014.11.04, 07:53

Re: С array или без

Сообщение slite »

Большое спасибо, за ответы.
Я понял свои ошибки.

Но только один момент.
Что подразумевается под понятием модуль?
app\controllers\ это?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: С array или без

Сообщение andku83 »

slite писал(а): 2018.07.27, 12:31 Что подразумевается под понятием модуль?
app\controllers\ это?
для вас:

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

  'defaultRoute' => '/контроллер/action'
а модуль это

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

app\modules
скорее всего у вас их нет
slite
Сообщения: 26
Зарегистрирован: 2014.11.04, 07:53

Re: С array или без

Сообщение slite »

если я пишу
'defaultRoute' => 'main/index',
То выходит

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

Not Found (#404)
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: С array или без

Сообщение andku83 »

andku83 писал(а): 2018.07.27, 12:25 еще в rules необходимо добавить:

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

        '/' => 'main/index',
добавили?
slite
Сообщения: 26
Зарегистрирован: 2014.11.04, 07:53

Re: С array или без

Сообщение slite »

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

            'rules' => array([
                '/' => 'main/index',
                'class' => 'yii\rest\UrlRule',
                'controller' => [
                    'main',
                    'site'
                ],
Так верно?
Вылезает ошибка

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

Setting unknown property: yii\rest\UrlRule::/
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: С array или без

Сообщение andku83 »

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

            'rules' => [
                '/' => 'main/index',
                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => [
                        'main',
                        'site'
                ],
            ]
slite
Сообщения: 26
Зарегистрирован: 2014.11.04, 07:53

Re: С array или без

Сообщение slite »

andku83 писал(а): 2018.07.27, 12:51

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

            'rules' => [
                '/' => 'main/index',
                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => [
                        'main',
                        'site'
                ],
            ]

Большое спасибо, все работает.

Я переименую тему чтобы было понятнее о чем была речь.
Ответить