OmgDef / yii2-multilingual-behavior

Yii2 port of the yii-multilingual-behavior.
146 stars 60 forks source link

Назначение цикла перебора правил валидации #35

Closed padlyuck closed 9 years ago

padlyuck commented 9 years ago

Юрий, подскажите пожалуйста, зачем нужен этот кусок кода https://github.com/OmgDef/yii2-multilingual-behavior/blob/master/src/MultilingualBehavior.php#L173-L200 переменная $validators дальше нигде не используется.

OmgDef commented 9 years ago

@padlyuck Для валидации динамических атрибутов модели

padlyuck commented 9 years ago

Но массив $validators дальше нигде не используется. Возможно вопрос кажется глупым, но я столкнулся со странным поведением вашей библиотеки. Дело в том, что в консольном приложении если модели задать правила 'default', то они не срабатывают для дефолтного языка. Так выглядит правило(все поля переводимые)

[['description',  'name', 'project',], 'default', 'value' => '123', 'skipOnEmpty' => false,],

Добавляю в базу новый элемент(языки en, ru английский дефолтный)

$model = new \common\models\Liner([
    'code'=>uniqid('liner_'),//непереводимое поле
    'name'=>'test',
    'name_ru'=>'test_ru',
]);
$model->save();

В веб приложении таблица выглядит следующим образом

language |   name    | description | project
---------+-----------+-------------+--------
   en    |   'test'  |    '123'    |  '123'
---------+-----------+-------------+--------
   ru    | 'test_ru' |    '123'    |  '123'

В консольном приложении имею другую картину

language |   name    | description | project
---------+-----------+-------------+--------
   en    |   'test'  |     ''      |   '' 
---------+-----------+-------------+--------
   ru    | 'test_ru' |    '123'    |  '123'

При этом правила не работают только для языка по-умолчанию

OmgDef commented 9 years ago

Но массив $validators дальше нигде не используется

Переменная $validators содержит ссылку на массив валидаторов модели. Валидатором default не пользовался. Нужно проверить.

padlyuck commented 9 years ago

да, мой промах. не обратил внимания, что там не обычный массив.

padlyuck commented 9 years ago

Не смог повторить баг на чистом окружении. Видимо проблема кроется где-то в моем проекте.