Загрузка конфига из модуля

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
lavrik
Сообщения: 110
Зарегистрирован: 2013.03.02, 21:41
Контактная информация:

Загрузка конфига из модуля

Сообщение lavrik »

Хочу что-бы во время инициализации, модулю прописывались новые роуты.
Делаю по инструкции - http://www.yiiframework.com/doc-2.0/gui ... dules.html

Все рулы сначала оттестил из основного конфиг.файла (/frontend/config/main.php) - работают!
Компаненту urlManager просто перенёс в init() модуля - не работает.
Где ошибка?

Мой модуль:

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

namespace app\modules\AviaServicesStat;
use yii\web\AssetManager;

class Module extends \yii\base\Module
{
    public $controllerNamespace = 'app\modules\AviaServicesStat\controllers';

    public function init()
    {
        parent::init();
            
        $urlManager = ([
            'components' => [
                'urlManager' => [
                    'class'                => 'yii\web\UrlManager',
                    'baseUrl'            => '/frontend/web/',
                    'enablePrettyUrl'    => true,
                    'showScriptName'    => false,
                    'enableStrictParsing' => false,

                    'rules' => [
                        // Правила для поиска
                        [
                            'pattern'    =>    'GetStat/<startDate:(.*?)>/<endDate:.*?>/<channels:.*?>/<yesterday_today:\d+>',
                            'route'        =>    'AviaServicesStat/default/index',
                            'suffix'    =>    '/',
                        ],
                        [
                            'pattern'    =>    'GetStat',
                            'route'        =>    'AviaServicesStat/default/index',
                            'suffix'    =>    '/',
                        ],
                        // *** * ***
                    ],
                
                ],
            ],
        ]);
        \Yii::configure($this, $urlManager);

    }
}
lavrik-v.ru - моя напоминалка по php.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Загрузка конфига из модуля

Сообщение vitalik1183 »

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

namespace frontend\modules\news;


use yii\base\BootstrapInterface;

class Bootstrap implements BootstrapInterface
{

    public function bootstrap($app)
    {
        $app->urlManager->addRules([
            [
                'pattern' => '/news/default/rating/',
                'suffix' => '/',
                'route' => '/news/default/rating/',
            ],
        ], false);
    }
} 
 
Yii2!
lavrik
Сообщения: 110
Зарегистрирован: 2013.03.02, 21:41
Контактная информация:

Re: Загрузка конфига из модуля

Сообщение lavrik »

Что-то не догоню...
Это нужно добавить прям в код моего модуля? или создать новый файл?
lavrik-v.ru - моя напоминалка по php.
lavrik
Сообщения: 110
Зарегистрирован: 2013.03.02, 21:41
Контактная информация:

Re: Загрузка конфига из модуля

Сообщение lavrik »

разобрался... но теперь новая ошибка:
Invalid Configuration – yii\base\InvalidConfigException
Unknown bootstrapping component ID: /frontend/modules/AviaServicesStat/Bootstrap


код моего бутстрапа:

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

<?
use yii\base\BootstrapInterface;

class Bootstrap implements BootstrapInterface
{
    public function bootstrap($app)
    {
        $app->urlManager->addRules([
            [
                'pattern'    =>    'GetStat/<startDate:(.*?)>/<endDate:.*?>/<channels:.*?>/<yesterday_today:\d+>',
                'route'        =>    'AviaServicesStat/default/index',
                'suffix'    =>    '/',
            ],
            [
                'pattern'    =>    'GetStat',
                'route'        =>    'AviaServicesStat/default/index',
                'suffix'    =>    '/',
            ],
        ], true);
    }
} 

lavrik-v.ru - моя напоминалка по php.
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: Загрузка конфига из модуля

Сообщение chungachguk »

namespace потерял
lavrik
Сообщения: 110
Зарегистрирован: 2013.03.02, 21:41
Контактная информация:

Re: Загрузка конфига из модуля

Сообщение lavrik »

не... что-то не так...
Не получается его даже подключить...
Делаю так: в /config/main.php

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

    ...
    'bootstrap' => ['log', 'ServBootstrap'],
    'controllerNamespace' => 'frontend\controllers',
    
    'modules' => [
        ...
        'ServBootstrap' => [
            'class' => 'frontend/modules/AviaServicesStat/Bootstrap',
        ],
        ...
    ],
а в модуле создал файл - Bootstrap.php:

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

<?
namespace frontend\modules\AviaServicesStat\Bootstrap;

use yii\base\BootstrapInterface;

class Bootstrap implements BootstrapInterface
{
    public function bootstrap($app)
    {
        $app->urlManager->addRules([
            [
                'pattern'    =>    'GetStat/<startDate:(.*?)>/<endDate:.*?>/<channels:.*?>/<yesterday_today:\d+>',
                'route'      =>    'AviaServicesStat/default/index',
                'suffix'     =>    '/',
            ],
            [
                'pattern'    =>    'GetStat',
                'route'      =>    'AviaServicesStat/default/index',
                'suffix'     =>    '/',
            ],
        ], true);
    }
} 
в результате ошибка:
ReflectionException
Class frontend/modules/AviaServicesStat/Bootstrap does not exist

Скорее всего я неверно подключаю его....
lavrik-v.ru - моя напоминалка по php.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Загрузка конфига из модуля

Сообщение vitalik1183 »

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

namespace frontend\modules\AviaServicesStat; 
Yii2!
lavrik
Сообщения: 110
Зарегистрирован: 2013.03.02, 21:41
Контактная информация:

Re: Загрузка конфига из модуля

Сообщение lavrik »

хм... Внес ваши исправления, + в конфиге:

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

    'bootstrap' => ['log', 'app\modules\AviaServicesStat\Bootstrap'],
 
Все заработало!
Спасибо большое)))
lavrik-v.ru - моя напоминалка по php.
Ответить