hook_form_alter

radhab20 Втр, 11/07/2017 - 08:48

Автовыбор категории при добавлении товара

Здравствуйте. Есть обычная категория, сделанная через таксономию. Список большой, поэтому неудобно для каждого товара выбирать вручную. Хочу написать временный модуль, который будет выбирать нужную мне категорию через form_alter. Только вот не пойму как мне это сделать. Пытался через #default_value, не получилось

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

Frenk Втр, 21/02/2017 - 22:25

[Решен] Как добавить информацию на страницу профиля пользователя

Господа, появилась задача вывести таблицу со всеми нодами пользователя на странице его профиля (вкладка "Просмотр", куда именно - указал на скрине).
В связи с чем есть ряд вопросов:
1) Как я понял, нужно в своем модуле юзать хук hook_form_alter?
2) Как узнать id этой формы? Смотрел код элемента в Opera, id так и не смог найти.
3) То ли мой гугл сломался, то ли шары не видят, но толковых примеров по этой теме не нашел, может у Вас есть?

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

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 Спасибо

Страницы