Как сделать вложение файла обязательным для типа контента в Drupal - PullRequest
1 голос
/ 21 сентября 2011

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

function ims_form_alter(&$form, &$form_state, $form_id) {


    switch ($form_id) {

     case 'media_content_node_form':
          unset($form['buttons']['preview']);
          if(is_numeric(trim(arg(3))))
            {
              $arg_nid = arg(3);
              $form['field_media_model']['#default_value'][0]['nid'] = $arg_nid;
            }

            switch($form['#id'])
            {
              case "node-form":
              $form['attachments']['#required'] = true;
              break;
            }

          break;
        }
      }

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Я считаю, что жизнь в Drupal упрощается при использовании FileField вместо основного модуля загрузки Drupal. С FileField вы можете создать поле CCK (FileField) для вашего типа контента и сделать это поле обязательным, как и любое другое поле CCK. Этот подход не требует написания одной строки кода.

Однако, если вам нужно использовать основной модуль загрузки Drupal, вы можете использовать hook_form_alter для этого, например:

function my_module_form_alter(&$form, &$form_state, $form_id) {
  switch ($form['#id']) {
    case "node-form":
      switch ($form['type']['#value']) {
        case "my_node_type":
          $form['attachments']['#required'] = true;
          break;
      }
    break;
  }
}
2 голосов
/ 21 сентября 2011

Да, это возможно.

  1. Проверьте идентификатор формы. Обычно вы можете получить имя, проверив форму и получив удостоверение личности. Заменить на '_'. Это дает вам идентификатор формы для формы.
  2. Поставьте условную проверку, если идентификатор формы ==. Используйте krumo($form) (включите модуль devel перед этим шагом).
  3. krumo() даст вам список всех имен полей. Сейчас $form[<field_name>]['#required'] = 1;

Надеюсь, это поможет !!

...