hook_form_alter

maksbaks Втр, 27/12/2016 - 13:24

Обязательное поле через hook_form_alter()

Есть поле с 3-мя checkbox $form['field_terms_of_agreement']
нужно сделать что бы форму нельзя было отправить если хотя бы один из чекбоксов не отмечен

$form['field_terms_of_agreement']['#required'] = TRUE;
таким образом как выше, если хотя бы одно из полей отмечено то валидацию форма проходит, а нужно что бы обязательно отмечены были все чек боксы

Буду очень благодарен

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

kazah Чт, 23/06/2016 - 19:54

hook_form_alter для radio кнопок

Добрый день, уважаемое сообщество!

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

IRONFELIX Сб, 06/12/2014 - 15:45

Добавить кнопку на форму редактирования ноды

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

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

KEFIR4UK Пнд, 17/11/2014 - 15:15

Изменение типа поля помощью

Доброго времени суток. Столкнулся с проблемой изменения типа поля через hook_form_alter. Нужно изменить тип поля в друпале (панель поиска которая находиться вверху слева) с помощью hook_form_alter через созданный модуль. Модуль называется my_forms.module. Для єтого в файле my_forms.module пишу:
function my_forms_form_alter(&$form, &$form_state, $form_id) {

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

mikel Вс, 15/06/2014 - 18:39

В _form_alter приходит пустой form_state

Пожалуйста, подскажите...

Классическая задача: после отправки формы нужно скрыть форму и вывести сообщение. Все примеры ведут к mymodule_form_alter.

Но почему-то в mymodule_form_alter $form_state приходит уже пустым, в то время как в mymodule_myform_submit значения из $form_state вполне доступны.

($form_state мне нужен чтобы проверить факт постбэка и правильность заполненности полей. В идеале бы, конечно, какое-нибудь свойство, типа $myform["valid"]==true, чтобы не дублировать проверки, за это буду отдельно признателен)

<?php
function mymodule_form_alter(&$form, &$form_state$form_id) {

if ($form_id == 'mymodule_myform') {
var_dump($form_state); //Приходит пустым
//Действия по скрытию элементов формы
...
}

}
?>

Ключевые слова: 
Версия Drupal: 
0 Спасибо

Quty Вс, 16/02/2014 - 21:27

Добавить DIV в форму добавления комментариев

Здравствуйте. Необходимо в стандартной форме комментариев добавить свой div (например, div id="mydiv") ПЕРЕД

<fieldset class="filter-wrapper form-wrapper" id="edit-comment-body-und-0-format">

То есть между основной областью ввода комментария и областью с подсказками текстовых форматов.

На основе нагугленного материала собрал следующий hook:

<?php
function MYTHEMETITLE_form_comment_form_alter(&$form, &$form_state) { 
// dsm($form);
$form['comment_body']['und'][0]['#columns'][1]['#prefix'] = '<div id="mydiv"></div>';
}
?>

Но он не работает. Поставить префикс ПЕРЕЛ основным полем ввода а не после него получается:

<?php
$form
['comment_body']['und'][0]['#prefix'] = 'MYDIV';
?>
Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

voviko Ср, 18/12/2013 - 10:41

hook view alter + views_exposed_form

Я не могу никак зацепить views_exposed_form, точне могу, и два раза. На странице есть блок фильров views и страница views.
работает нормально если фильтр не в блоке, или когда на странице только блок, без views, а вот если вывести фильтр в блок и перейти на страницу views, то форма дублируется.

Тип материала: 
Модули и темы: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

lionman Чт, 17/10/2013 - 07:30

Использование #states в hook_form_alter

Здравствуйте. Пытаюсь решить вопрос по реализации зависимости полей в drupal 7. Из многочисленных вопросов, стало понятно что оптимально в 7ом друпале использовать #states, вместо conditional fields. Как оказалось еще одним камнем в этот модуль является проблема зависимости при использовании модуля multi_step.

В целом как работает #states, я разобрался. Но только понял как работает он при создании своей формы hook_form. Но моя задача заключается в том чтобы переделать уже готовую форму добавления материала.

hook_form_ID_FORM_alter

Использую её. Нахожу массивы через dsm($form);
Но не могу понять как правильно прописывать зависимости.

Допустим в созднаной форме это сделал так:

<?php $form['radio_type'] = array(
    
'#type' => 'radios',
    
'#options' => array(?>
Тип материала: 
Версия Drupal: 
0 Спасибо

Strycker Пт, 14/06/2013 - 10:04

Не работает обработчик формы

Добрый день, коллеги.

Есть вопрос. Написал свой модуль, в нём реализован хук - hook_form_FORM_ID_alter()

<?php
function ure_form_user_profile_form_alter(&$form, &$form_state$form_id) {

 // ....

      $form['#submit'][] = 'ure_submit';
    }
  return 
$form;
}
?>

В этой функции я добавляю к форме редактирования пользователя пару селектов. Задумка такая, чтобы пользователь выбирал что-то из предложенных в селектах вариантах, а при сохранении профиля этот текст сохранялся в текстовое поле пользователя, сформированное встроенными средствами друпал, через админку.

Написал обработчик всего этого хозяйства:

<?php
function ure_submit($form, &$form_state) {?>
Тип материала: 
Версия Drupal: 
0 Спасибо

bifrost Чт, 21/02/2013 - 15:31

[РЕШЕНО] Присвоение значия select items в hook_form_alter

Здравствуйте.
Создал свой тип материала. К нему добавил поле пустой select list. Этот список я заполняю динамически через hook_form_alter. Список заполняется. Значение сохраняется. Но когда нода открывается на редактирование, необходимо списку установить сохранённое значение. Уже пробовал разные варианты. Этот не работает:

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

bobo Пт, 21/12/2012 - 08:50

Валидация добавленного поля типа file

Всем привет.
Drupal вижу первый день, поэтому возникла одна проблема, не знаю как ее грамотней решить.
Задача такова, добавить в модуль контактов (где заполняется форма и отсылается на почту) дополнительное поле для загрузки файла (средствами другого модуля). С этим проблем нет.

<?phpunction contactattach_form_contact_mail_page_alter(&$form, &$form_state) {
    if (isset($_COOKIE['test_developer'])) {
        $form['#attributes'] = array('enctype' => "multipart/form-data");
        $form['message_file_attach'] = array(
            '#type' => 'file',
            '#title' => 'Загрузить файл',
        );
        

    }
}
?>

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

MasterDzen Пнд, 12/11/2012 - 07:06

[РЕШЕНО] Почему может не работать $form_state['redirect']?

есть материал, в hook_form_alter добавляю свою функцию в сабмиты формы:

function my_modul_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'my_material_node_form') {
      $form['#submit'][] = '_my_modul_form_alter_submit';
  }
}
}

в сабмите добавляю редирект (надеюсь, что после сабмита произойдет редирект..)

function _my_modul_form_alter_submit($form, &$form_state) {
  $form_state['redirect'] = array('node/' . $form['nid']['#value'], array('fragment' => 'calendar'));
}

хочу чтобы после сохранения материала, браузер прокрутил экран на нужный мне якорь..
но редиректа не происходит =/

добавленный субмит точно выполняется.
после сохранения открывается страница: 'node/' . $form['nid']['#value'].

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

sitdikov Сб, 24/03/2012 - 11:56

РЕШЕНО: Не работает hook_form_alter

Не понимаю..
Установил вес модулю в бд напрямую - 5000, сбросил кеш. Вызываю mymodule_hook_alter()

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

ivan-zykov Пнд, 12/03/2012 - 20:29

[Решено] Не убираются Настройки адресов $form['path']

Модифицирую форму через hook_form_alter(). Пытаюсь убрать с неё все настройки:

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

chel Ср, 07/12/2011 - 22:54

Пытаюсь поменять значение CCK fieldlist

1.Правильно ли, что для CCK поля hook_form_alter - не дает перехватить CCK поле, а только через дальнейшее hook_after_build - как ниже я описал? Т.к. в hook_form_alter - в массиве нет полей CCK кроме системных : title,body,...

2.Как бы не дать форме брать данные, а тупо переопределить?
Поле field_reg_link - берет данные из поля, там значения от 1 до 20, я пытаюсь поставить свои значения, но в итоге результат
'ffffffffffff';
'ffffffffffff';
'3';
'4';
'5';
'6';
...
'20';
В дальнейшем хочу брать сюда данные из SQL
Правильно ли я делаю?

<?php
function akbform_form_alter(&$form, &$form_state$form_id) {
  if (
$form_id == 'reglink_node_form')   { 
         
$form['#after_build'][] = 'akbform_after_build'
  }
}

function akbform_after_build($form, &$form_state) {
   
$form['field_reg_link']['value']['#options']['1'] = 'ffffffffffff'
   
$form['field_reg_link']['value']['#options']['2'] = 'ffffffffffff';
   
dsm ($form);  
   return 
$form;
}
?>

Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

sergalin Пт, 11/11/2011 - 06:08

Зависимые элементы формы и использование #states

Добрый день!!!

Подскажите пожалуйста в чем дело?

Создаю два поля используя hook_install()

<?php
...
function 
_myfields_installed_fields() {
  return array(
    
'field_1' => array(
      
'field_name' => 'field_1',
      
'type' => 'list_boolean',
      
'module' => 'list',
      
'settings' => array(
        
'allowed_values' => array('yes''no'),
      ),
    ),
    
'field_2' => array(
      
'field_name' => 'field_2',
      
'type' => 'text_long',
      
'cardinality' => 1,
      
'module' => 'text',
    ),
...

function _myfields_installed_instances_fields() {
  return array(
    
'field_1' => array(
      
'field_1' => 'field_1',
      
'label' => 'label 1',
      
'required' => 1,
      
'default_value' => array(array('value' => 0),
      ),
    ),
    
'field_2' => array(
      
'field_2' => 'field_2',
      
'label' => 'label 2',
    ),
...
?>

Далее хочу сделать поле field_2 видимым в зависимости от выбранного значения поля field_1

<?php
/**
 *Implements hook_form_alter().
 */
function myform_form_alter(&$form, &$form_state$form_id) {
    
//вот так не работает
    
$form['field_2'][#states] = array(
      
'visible' => array(
        
':input[name="field_1"]' => array('value' => 1)),
    );
    ...
?>

если на форме добавляю поле, то работает нормально

<?php
...
function 
myform_form_alter(&$form, &$form_state$form_id) {
    
$form['field_3'] = array(
    
'#type' => 'radios',
    
'#options' => drupal_map_assoc(array('yes''no'),
    );
?>
Тип материала: 
Ключевые слова: 
Версия Drupal: 
0 Спасибо

MaNaX Пнд, 25/04/2011 - 06:28

Реальные имена в project_issue

есть модуль project и realname и база user, где в поле name хранится ФИО пользователя на английском (ede например).
при назначении ответственного пользователя в формах и коментах, подправил name на realname при помощи hook_form_alter и все смотрится замечательно, но

выводится все равно name, тк в базу загоняется <?php$user->uid?>.
нашел где присходит наполнение массива этими данными, а также функцию темизации, но хакать ядро модуля нехочу( котят очень жалко))), а свои знания друпала уже закончились(((
Можно ли не меняя код модуля project заменить функцию темизации на свою в своем модуле??

PS модуль devel видет эту переменную в маркерах

чем он ее находит и можно ли ее подменить??

Тип материала: 
Версия Drupal: 
0 Спасибо

small Втр, 05/10/2010 - 11:35

Нет вызова mytheme_form_alter

Делаю тему, написал так:

Ключевые слова: 
Версия Drupal: 
0 Спасибо

starro-serge Вс, 15/08/2010 - 09:50

[РЕШЕНО] И это всё о ней. Форма API. Заморочка с _form_alter.

Заранее прошу прощения за многословие, но короче не объяснить.

Пишу свой модуль.
В модуле присутствуют:
function win_constructor_menu() {
$items['win_constructor'] = array(
...
return $items;
}
function win_constructor_page() {
$output = drupal_get_form('win_constructor_nameform');
return $output;
}
function win_constructor_nameform() {
...
return $form;
}
function win_constructor_form_alter(&$form, &$form_state, $form_id) {
...
}
function win_constructor_nameform_validate($form, $form_state) {
....
}
function theme_win_constructor_nameform($form) {
...
drupal_render($form);
return $output;
}

Чтобы проследить как это всё работает, расставил drupal_set_message по модулям.
При загрузке страницы получаем следующую последовательность:
* PAGE win_constructor_page
* CONSTRUCTOR win_constructor_nameform
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] = 0
* THEME theme_win_constructor_nameform
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] =
* ALTER win_constructor_form_alter
* in ALTER $form_state[values][win_opens_radios] =
* in ALTER $form[win_opens][win_opens_radios] =

Тут уже непонятно, зачем после темизации ещё два раза влезаем в ALTER.

Ключевые слова: 
Версия Drupal: 
0 Спасибо

AntonB Пт, 09/04/2010 - 01:17

Помогите с hook_form_alter, скрыть поле от вывода

Доброго дня.

Прошу помощи по hook_form_alter для Drupal 6. С Twitter Module. Сам к сожалению в PHP не силен.

Ключевые слова: 
Версия Drupal: 
0 Спасибо

Страницы