[решено] namespace в Yii1. (Хочу Yii2)

Уже исправленные репорты или принятые предложения
Ответить
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

[решено] namespace в Yii1. (Хочу Yii2)

Сообщение yiijeka »

Да namespace это весело ))
Столкнулся с такой засадой:
Есть такое:
protected/module/some/
И есть common/module/some/SomeModule.php - тут используются namespace.

В конфиге модулей явно задаю:

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

'some' => array(
     'class' => '\common\modules\some\SomeModule',
) 
Так он вместо того, чтобы брать этот класс, первым делом, походу, проверяет все равно папку protected/module/ и ищет в ней SomeModule.php. А если не обнаруживает папку, то тогда уже берётся за 'class' => '\common\modules\some\SomeModule'.

Пришлось вместо 'some' => array( писать 'someOther' => array(.
Баг?
Последний раз редактировалось yiijeka 2013.03.06, 14:11, всего редактировалось 2 раза.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: namespace в Yii1. (Хочу Yii2)

Сообщение slavcodev »

нет никаких проблем с неймспейсами в yii 1.1, начиная с ввода controllerNamespace
в конфиге есть?

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

'aliases' => array(
  'common' => 'application',
),
Жду Yii 3!
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: namespace в Yii1. (Хочу Yii2)

Сообщение yiijeka »

В конфиге:

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

Yii::setPathOfAlias('common', ... );

return CMap::mergeArray(
    array(        
        'modules' => array(
            'some' => array(
                  'class' => '\common\modules\some\SomeModule',
            ) 
        )
....
 
Как уже говорил есть такое protected/module/some/ - этот обычный модуль без namespace.
Есть также по пути    'class' => '\common\modules\some\SomeModule', - модуль с namespace.
Вот его код:

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

namespace common\modules\some;

class SomeModule extends \CWebModule
{   
    public $controllerNamespace = '\some\controllers';
}
Теперь фокус-покус:
test/index.php?r=some выводит 123123123123 Потому что в protected/module/some/controllers/defaultController ->actionIndex echo 123123123;
Т.е.  'class' => '\common\modules\some\SomeModule', как бы не сработал. Ладно. Удаляем из папки protected/module/some/ файл SomeModule.php получаем Alias "composer.ComposerModule" is invalid. Make sure it points to an existing PHP file and the file is readable....ну понятно не нашёл, а чё он 'class' => '\common\modules\some\SomeModule' опять игнорировал. Ладно. Удаляем или переименовываем папку protected/module/some в someTrololo, переходим по test/index.php?r=some выползает "ОХОХО я попал туда куди и хотел", оно реализовано в '\common\modules\some\controllers/defaultController ->actionIndex echo "ОХОХО ...";

Фокус, который получается только у меня или баг?
Последний раз редактировалось yiijeka 2013.03.06, 13:19, всего редактировалось 1 раз.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: namespace в Yii1. (Хочу Yii2)

Сообщение slavcodev »

в API видно что он сначала проверяет указан ли класс. И только если нет то генерирует дефолтный. Так что надо искать ошибку у себя в коде )
Жду Yii 3!
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: namespace в Yii1. (Хочу Yii2)

Сообщение yiijeka »

Да, я смотрел это. Поэтому и удивляюсь, что за фокус.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: namespace в Yii1. (Хочу Yii2)

Сообщение yiijeka »

Нашёл)) Локальная проблема. У меня есть метод, который автоматом регистрирует модули, которые находятся в папке protected/module/. Он получался просто переписывал 'class' => '\common\modules\some\SomeModule' на 'class' => '\protected\module\$name'.... добавил
if (!$this->hasModule(basename($moduleDirectory))) {....}
Аватара пользователя
MetalGuardian
Сообщения: 208
Зарегистрирован: 2011.03.06, 02:42
Откуда: Киев

Re: namespace в Yii1. (Хочу Yii2)

Сообщение MetalGuardian »

mc-bear писал(а):нет никаких проблем с неймспейсами в yii 1.1, начиная с ввода controllerNamespace
в конфиге есть?

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

'aliases' => array(
  'common' => 'application',
), 

а как же модели в неймспесах?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: [решено] namespace в Yii1. (Хочу Yii2)

Сообщение slavcodev »

а что с моделями? там никогда не было проблем, т.к. модели создаются через реальный класс new \Class(), \Class::model()
проблемы были только когда класс передавался через строку, но часть решилось через регистрацию алиаса
и окончательно решилось с поиском контроллеров.
Жду Yii 3!
Аватара пользователя
MetalGuardian
Сообщения: 208
Зарегистрирован: 2011.03.06, 02:42
Откуда: Киев

Re: [решено] namespace в Yii1. (Хочу Yii2)

Сообщение MetalGuardian »

тогда я может что то не правильно делаю:
если модели находятся в нейсмспейсе \space\modles\Article, то формы генерируются с такими ид и именами: space\\models\\Article_label
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: [решено] namespace в Yii1. (Хочу Yii2)

Сообщение yiijeka »

Да, с этим беда :) Я уже привык )
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: [решено] namespace в Yii1. (Хочу Yii2)

Сообщение slavcodev »

А ты про это ) Я не работаю с стандартными компонентами для работы с формами.
Жду Yii 3!
Аватара пользователя
MetalGuardian
Сообщения: 208
Зарегистрирован: 2011.03.06, 02:42
Откуда: Киев

Re: [решено] namespace в Yii1. (Хочу Yii2)

Сообщение MetalGuardian »

mc-bear писал(а):А ты про это ) Я не работаю с стандартными компонентами для работы с формами.
а какими? :) если не секрет
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: [решено] namespace в Yii1. (Хочу Yii2)

Сообщение lancecoder »

CModel вместо CFormModel, т.к. в Yii2 не будет CFormModel ?)
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: [решено] namespace в Yii1. (Хочу Yii2)

Сообщение slavcodev »

Собственным трехколесным великом )
Жду Yii 3!
Ответить