title
meta_title
meta_description
и тп.
Я сделал форму, которая генерируется на основе подключенных языков, тоесть такие поля превращаются в массивы:
title[ru]
meta_title[ru]
meta_description [ru]
title[en]
meta_title[en]
meta_description [en]
и тп.
Выглядит это вот таким образом:
Код: Выделить всё
<div class="row">
<div class="col-md-4 col-md-4 col-sm-4 col-xs-6 col-lg-4"><?= $form->field($formModel, 'meta_title['.$lang['code'].']')->textInput(['maxlength' => true]) ?></div>
<div class="col-md-4 col-md-4 col-sm-4 col-xs-6 col-lg-4"><?= $form->field($formModel, 'meta_description['.$lang['code'].']')->textInput(['maxlength' => true]) ?></div>
<div class="col-md-4 col-md-4 col-sm-4 col-xs-6 col-lg-4"><?= $form->field($formModel, 'meta_keywords['.$lang['code'].']')->textInput(['maxlength' => true]) ?></div>
</div>
Все происходит вот из-за этого кода:
Код: Выделить всё
public static function getAttributeName($attribute)
{
if (preg_match('/(^|.*\])([\w\.]+)(\[.*|$)/', $attribute, $matches)) {
return $matches[2];
} else {
throw new InvalidParamException('Attribute name must contain word characters only.');
}
}
Тоесть он просто всегда удаляет все, что в [] и не дает возможность валидировать только определенное поле в массиве. Что с этим делать ?