Как добавить js/css в форму добавления материала?

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

Аватар пользователя engenes engenes 5 ноября 2019 в 18:05

Есть форма добавления ноды, с помощью hook_form_akter и drupal_add_js я добавил нужные скрипты.
Но если я отправляю форму с ошибкой (например не заполнил обязательное поле)
То форма перезагружается без подключенных файлов, кроме того не срабатывает даже функции такие как drupal_set_message.

Как сделать чтобы кастомный код выполнялся, даже если форма перезагрузилась с ошибкой?

Первый вариант (нерабочий)

<?php
function interviewform_form_alter(&$form, &$form_state$form_id) {
    
dpm($form_id);
    if(
$form_id == 'base_form_node_form'){
        
$path drupal_get_path('module','interviewform');

        

drupal_add_js('https://api-maps.yandex.ru/2.1/?apikey=а3а3а3кукумкмкммк&lang=ru_RU''external');
        
drupal_add_js($path.'/interviewform.js');
        
drupal_add_css($path.'/interviewform.css');        
        
$form['field_geotag']['#prefix'] = '<div class="yamap_wrapper"><a href="#" class="btn btn-default getgeotag">Определить местоположение</a><div id="yamap"></div></div>';
        
//dpm($form);  
    
}
    
}
?>

Второй рабочий но похож на костыль

<?php
function interviewform_form_alter(&$form, &$form_state$form_id) {
    
dpm($form_id);
    if(
$form_id == 'base_form_node_form'){
        
$path drupal_get_path('module','interviewform');
        
$form['field_geotag']['#prefix'] = '
        <script type="text/javascript" src="https://api-maps.yandex.ru/2.1/?apikey=мкмкмекиеиеке4&lang=ru_RU"></script>
        <script type="text/javascript" src="/'
.$path.'/interviewform.js"></script>
        
        <link rel="stylesheet" type="text/css" href="/'
.$path.'/interviewform.css">
        <div class="yamap_wrapper"><a href="#" class="btn btn-default getgeotag">Определить местоположение</a><div id="yamap"></div></div>'
;
        
//dpm($form);  
    
}
    
}
?>

Лучший ответ

Аватар пользователя sas@drupal.org sas@drupal.org 6 ноября 2019 в 11:49
1

Вместо drupal_add_js используйте

$form['#attached']['js'][] = ...;
$form['#attached']['css'][] = ...;

Комментарии