Добавить существующее поле в собственную форму

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

Аватар пользователя Anodo Anodo 26 ноября 2018 в 16:38

Программно делаю примитивную форму в своем модуле:

<?php

function my_first_form($form, &$form_state){
        
$form=array();
        
$form['name1'] = array(
            
'#type'    => 'textfield',
            
'#title' => t('Название поля'),
            
'#default_value' => t('Текст по умолчанию'),
        );
        
$form['submit'] = array(
            
'#type' => 'submit',
            
'#value' => t('Submit'),
        );
        return 
$form;
    }

function 

main_function() {
        
$form drupal_get_form('my_first_form'); //получаем поля формы
        
$form drupal_render($form); //рендерим форму
        
return $form;
    }
?>

Не могу сообразить, как в свою собственную форму добавить уже существующее поле (ссылка на термин) и настроить его виджет (автозаполнение).

Лучший ответ

Аватар пользователя Orion76 Orion76 27 ноября 2018 в 6:32

Вам надо просто добавить на форму элемент '#type'=>'textfield'
и добавить к нему "функционал" автокомплита.
Тут примеры, в т.ч. и для taxonomy : https://www.drupal.org/node/854216

Комментарии

Аватар пользователя voviko voviko 27 ноября 2018 в 1:36

никак.
Вам во первых необходимо создать поле с автозаполнением по термину.
Потом реализовать в hook_submit привязку tid(s)

Аватар пользователя Anodo Anodo 27 ноября 2018 в 12:13

Спасибо ссылке от Orion76, разобрался, все получилось!

Если вкратце, добавляем текстовое поле с автозаполнением в форму, а в качестве источника указываем имя поля, которое является "Ссылкой на термин", например:

$form['smart1'] = array(
                '#type' => 'textfield',
                '#title' => t('Смартфон 1'),
                '#autocomplete_path' => 'taxonomy/autocomplete/field_smart_one',
                '#maxlength' => 30,
                );

Проверить, можно ли указывать это имя поля можно в браузере: http://ВашСайт/taxonomy/autocomplete/ИмяПоля