Как программно добавить форму к узлу в Drupal 7?

Как программно добавить форму к узлу в Drupal 7?

15.07.2012 10:20:06 Просмотров 62 Источник

Мне нужно добавить программную форму к узлу в Drupal 7. Как прикрепить форму к узлу?

function addtabexample_form($node, &$form_state) {
  $type = node_type_get_type($node);

  $form['title'] = array(
    '#type' => 'textfield', 
    '#title' => check_plain($type->title_label), 
    '#default_value' => !empty($node->title) ? $node->title : '', 
    '#required' => TRUE, 
    '#weight' => -5,
  );

  $form['field1'] = array(
    '#type' => 'textfield', 
    '#title' => t('Custom field'), 
    '#default_value' => $node->field1, 
    '#maxlength' => 127,
 );


  return $form;
}
У вопроса есть решение - Посмотреть?

Ответы - Как программно добавить форму к узлу в Drupal 7? / How to programmatically add a form to a node in Drupal 7?

Является ответом!
Ayesh K

16.07.2012 02:20:05

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

Я не уверен, как вы получите объект $node для этого. У вас есть $node в параметрах функции и $form в качестве возвращаемого значения...

См. http://drupal.org/node/197122 например (я добавил часть D7)формы, которая может быть встроена в узел. Но делать это очень плохо - вы столкнетесь с проблемами повторного объявления функций, проблемами индексирования и целым рядом проблем.

Я знаю, что это не настоящий ответ, но я не знаю, как написать это в 500 символов.

Muhammad Reda

16.07.2012 12:03:02

Вы можете следовать этому примеру кода, используя hook_node_view()

function [YOUR_MODULE]_node_view($node, $view_mode, $langcode)
{
    $my_form = drupal_get_form('addtabexample_form', $node);
    $node->content['my_form_attached'] = array(
        '#markup' => drupal_render($my_form),
        '#weight' => 10,
    );
}
https://stackoverflow.com/questions/11494439/how-to-programmatically-add-a-form-to-a-node-in-drupal-7/11500272#comment38878084_11500272
Это очень удобный фрагмент кода. Спасибо.
https://stackoverflow.com/questions/11494439/how-to-programmatically-add-a-form-to-a-node-in-drupal-7/11500272#comment103852477_11500272
Используя этот метод, я не могу вызвать функцию обработчика отправки.
Закрыть X