inline_entity_form + image + AJAX = Notice: Undefined index: #title в функции file_managed_file_validate()

Главные вкладки

Аватар пользователя CSoft CSoft 18 ноября 2012 в 20:36

Всем привет!

Выпала возможность наконец опробовать commerce Smile И при разработке случилась следующая ситуация.

Для создания товара commerce_product я использую inline_entity_form-виджет для поля вариантов товара в ноде. У commerce_product есть поле изображения. У типа материала ноды есть поле с анлим-списком, который добавляет новые поля, соответственно, с помощью AJAX. Когда это происходит, то выскакивает ошибка, если картинка не выбрана:

Notice: Undefined index: #title в функции file_managed_file_validate() (строка 567 в файле ...\modules\file\file.module).

То есть, при выводе поля с выбором картинки в inline_entity_form, он убирает из него #title (так как выводит его через свой заголовок в $entity_form['product_image']) и в file_managed_file_validate происходит ошибка, так как при валидации этот #title используется для оповещения о названии поля с ошибкой.

Я искал здесь, на орге подобную проблему - тишина... Все модули свежие, dev-версий среди них нет.

В итоге я пока обошёлся следующим решением, при условии, что моё поле с картинкой называется field_product_image:

<?php
function MODULENAME_inline_entity_form_entity_form_alter(&$entity_form, &$form_state) {
  if (
$entity_form['#entity_type'] == 'commerce_product') {
    
$field_product_image field_info_instance($entity_form['#entity_type'], 'field_product_image'$entity_form['#bundle']);
    
$entity_form['field_product_image'][LANGUAGE_NONE][0]['#title'] = $field_product_image['label'];
  }
}
?>

Ничего другого я придумать не смог. Рыскал настройки полей, но никак titie вернуть полю с изображением, кроме как руками, не смог. Может, я что-то такое упустил? Подскажите, кто сталкивался с подобным, есть ли решение красивее. Но факт есть факт - ошибка присутствует и это не есть гуд.

Комментарии