2015-07-05 2 views
0

У меня есть базовое приложение yii2 с 2 частями (сеть и сервис для мобильных устройств).Почему отдельная конфигурация модуля Yii2 не работает в основном приложении?

Я создал модуль для обработки спокойных запросов, запущенных с мобильных устройств. Я хочу настроить этот модуль на отдых. Поэтому я создал файл конфигурации для этого модуля в стороне от каталога модуля. как упомянуто в yii2 documentation for modules

/config/config.php:

return [ 

'components' => [ 
    'urlManager' => [ 
     'class' => 'yii\web\UrlManager', 
     // Disable index.php 
     'showScriptName' => false, 
     // Disable r= routes 
     'enablePrettyUrl' => true, 
     'enableStrictParsing' => false, 
     'rules' => array(

      [ 
       'class' => 'yii\rest\UrlRule', 
       'controller' => 'mobile/mobile-clients', 
       'extraPatterns' => ['GET search' => 'search'] 
      ], 

     ), 
    ], 
    'request' => [ 
     'class' => '\yii\web\Request', 
     'enableCookieValidation' => false, 
     'parsers' => [ 
      'application/json' => 'yii\web\JsonParser', 
     ], 
    ], 
] 

]; 

класс модуля выглядит следующим образом:

<?php 

namespace app\modules\Mobile; 

use Yii; 
use yii\base\Module; 

class MobileService extends Module { 

    public $controllerNamespace = 'app\modules\Mobile\controllers'; 

    public function init() { 
     parent::init();  
     Yii::configure($this, require(__DIR__ .DIRECTORY_SEPARATOR  
        .'config'.DIRECTORY_SEPARATOR .'config.php')); 

    } 
}   

Проблема заключается в том, что компонент запроса не работает ожидаемый , пока он работает нормально, когда он сконфигурирован в конфигурации приложения (config/main.php)

То же самое для urlManager.

Любые идеи?

+1

Зачем вам дублировать эти компоненты? Просто скопируйте экземпляры, чтобы их было только по одному. Никогда не рекомендуется дублировать компоненты, используемые повсюду – Blizz

+0

@robsch Я хочу настроить компоненты мобильного модуля на то, чтобы быть спокойным, это все, что я хочу, правильно ли это? – Boudi

+0

@Blizz любые идеи – Boudi

ответ

0

Решение моей проблемы заключается в создании приложения api, которое является новым приложением внутри основного приложения yii2. Он разделяет модели и каталог поставщиков, но имеет собственный скрипт конфигурации и ввода (index.php). Это solution link для получения дополнительной информации.

EDIT:

Не забудьте добавить компонент пользователя в файле api.config

'user' => [ 
    'identityClass' => 'app\models\User', 
    'enableAutoLogin' => false, 
    ], 

Я думаю, с помощью yii2 структуры передовых приложений лучше для случая, как у меня. Но это решение отлично работает :).

Лучший.

Смежные вопросы