kaoru: Блог

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

[решено] передача значения переменной в форму

17 июня 2009 в 16:56

Пытаюсь разобраться с примером модуля аннотации.
Суть в том, что в hook_nodeapi (annotate_nodeapi) к уже сущестующему контенту добавляет форму для ввода пользователем текста аннотации.
Далее текст аннотации сохраняется в БД (по нажатию submit).

1. добавление формы в примере происходит так:

$node->content['annotation_form'] = array(
        '#value' => drupal_get_form('annotate_entry_form', $node),
        '#weight' => 10
);

однако, в API функция drupal_get_form описанна только с одним аргументом: drupal_get_form($form_id).
вопрос: что означает такая странная запись: drupal_get_form('annotate_entry_form', $node)?

2. подозреваю, что таким способом передавалось значение переменной $node в функцию-конструктор формы annotate_entry_form. Но таким способом это не передается (в функции "переданная" переменная - пустая).
вот сама функция:

function annotate_entry_form($node) {
        // определить fieldset
        $form['annotate'] = array(
                '#type' => 'fieldset',
                '#title' => t('Annotations')
        );
        // определить textarea внутри fieldset
        $form['annotate']['note'] = array(
                '#type' => 'textarea',
                '#title' => t('Notes'),
                '#default_value' => isset($node->annotation) ? $node->annotation : '',
                '#description' => t('Make your annotations about THIS!')
        );
        // сохранить id ноды (для удобства)
        $form['annotate']['nid'] = array(
                '#type' => 'value',
                '#value' => $node->nid
        );
        // определить функцию submit
        $form['annotate']['submit'] = array(
                '#type' => 'submit',
                '#value' => t('Написать!')
        );