Вы здесь

Как заменить " - Выберите значение - " на метку поля?

2

Здравствуйте!

Есть поле "Тип дома" (field_realty_house_type), со следующими значениями (терминами таксономии) "Кирпичный", "Деревянный", "Панельный" и т.д. На странице материала у данного поля следующие параметры: "Ссылка на термин" и "Выбор из списка"

При заполнении формы заголовок этого селекта выводится по умолчанию " - Выберите значение - ".

Как заменить заголовок селекта на метку поля (в данном случае на "Тип дома")?

Версия Drupal: 
7.x
Категория: 
Form API
Вопрос задан 14.04.2015 - 12:42

Ответы

4

прописать hook_form_alter и переписать значение на селекте #empty_option
https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.h...
Должно получится что-то вроде

function mymodule_form_alter(&$form,&$form_state, $fid){
    if($fid == 'NODE_TYPE_node_form'){
       $form['field_realty_house_type']['und']['#empty_option'] = $form['field_realty_house_type']['#title'];
    //Если строка выше не сработает попробуйте так
     //  $form['field_realty_house_type']['und']['#options']['_none'] = $form['field_realty_house_type']['#title'];
    }
}
Ответ дан 14.04.2015 - 21:07

И с первой и со второй строчкой выдает ошибку:
Notice: Undefined index: #title в функции mymodule_form_alter()

Комментарий оставлен 15.04.2015 - 11:37

Модуль - mymodule?
'NODE_TYPE_node_form' - Изменил на нужное значение?
$form['field_realty_house_type']['und']['0']['#empty_option'] - ещё вот так попробуй. И нижнее значение тоже.

Комментарий оставлен 15.04.2015 - 17:32

Всем спасибо!

Вот так, сработало:

function MYMODULE_form_alter(&$form,&$form_state, $fid){
    if($fid == 'realty_node_form'){
      $form['field_realty_house_type']['und']['#options']['_none'] = ' - ' . $form['field_realty_house_type']['und']['#title'] . ' - ';
    }
}
Комментарий оставлен 15.04.2015 - 18:01

Сейчас бы еще понять, как это применить не к одному полю, а ко всем селектам в форме.

Комментарий оставлен 15.04.2015 - 18:05

foreach по $form попробуйте.
Что-то типа:

function MYMODULE_form_realty_node_form_alter(&$form,&$form_state){
      foreach($form as $field) {
        if ($field['und']['#type'] == 'select') {
          $field['und']['#options']['_none'] = ' - ' . $field['und']['#title'] . ' - ';
        }
      }
}
Комментарий оставлен 15.04.2015 - 18:15

field_realty_house_type - это название поля в форме, вот надо как-то вместо него другие названия полей подставлять, наверно.

Комментарий оставлен 15.04.2015 - 18:40

Да, верно, я перепутал. Изменил предыдущую запись, смотрите.

Комментарий оставлен 15.04.2015 - 19:33

Ошибку выдает - Fatal error: Cannot use object of type stdClass as array

Комментарий оставлен 15.04.2015 - 21:00

Смотри на какой строке ошибка. И там сказано что надо обрабатывать не как массив, а как объект.
Я же код привел, как приблизительный.

Комментарий оставлен 16.04.2015 - 04:21
0

Либо перевести "- Select a value -" по-другому, либо в hook_form_alter() изменить

Ответ дан 14.04.2015 - 17:49
Аватар пользователя drupby
drupby
450