Почему моя функция отправки формы drupal не вызывается? - PullRequest
2 голосов
/ 12 марта 2011

Тьфу, это, наверное, что-то простое, но это сводит меня с ума.У меня есть простая форма (просто кнопка отправки), которую я вставляю в узел с помощью hook_nodeapi ().Он вставляется правильно, и страница обновляется, когда я отправляю, но это никогда не выполняет функцию form_submit ().Вот код:

<code>function fantasy_stocks_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  $form = drupal_get_form('fantasy_stocks_buy_me_form', $node);
  switch ($op) {
    case 'view':
      $node->content['body']['#value'] .= $form;
      break;
  }
}

function fantasy_stocks_buy_me_form(&$form_state, $node) {
  $form['submit'] = array(
    '#type' => 'submit',
    '#title' => t('Buy') . ' ' . $node->title,
    '#description' => t('Add') . ' ' . $node->title . ' ' . t('to your stock portfolio.'),
    '#value' => t('Buy') . ' ' . $node->title,
    '#submit' => TRUE
  );
  $form['node_added'] = array(
    '#type' => 'hidden',
    '#value' => $node->nid
  );
  $form['#submit'][] = 'fantasy_stocks_buy_me_form_submit';
  return $form;
}


function fantasy_stocks_buy_me_form_submit( $form, &$form_state ) {
  $message = 'You have submitted the ' . $form_id . ' form which contains the following data:<pre>' . print_r($form_values,true) . '
';drupal_set_message (т ($ сообщение));}

Я пытался добавить echo и die () в функцию submit, это определенно не вызывается.Я также попытался отключить объявление $ form ['# submit'], поскольку об этом по умолчанию должно позаботиться, но безрезультатно.Я знаю, что, должно быть, упускаю что-то глупое.Любые идеи?

Кроме того, одна вещь, которая казалась странной, заключается в том, что форма визуализируется с помощью следующего тега:

<form action="/MLMBid/node/5"  accept-charset="UTF-8" method="post" id="fantasy-stocks-buy-me-form-1"> 

Это нормально, если к значению добавляется «-1»идентификатор формы?

Ответы [ 2 ]

5 голосов
/ 12 марта 2011

Наконец-то разобрался. Часть, которая создавала кнопку отправки:

$form['submit'] = array(
    '#type' => 'submit',
    '#title' => t('Buy') . ' ' . $node->title,
    '#description' => t('Add') . ' ' . $node->title . ' ' . t('to your stock portfolio.'),
    '#value' => t('Buy') . ' ' . $node->title,
    '#submit' => TRUE
  );

Я скопировал части этого из учебника, и, видимо, строчку

'#submit' => TRUE

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

0 голосов
/ 12 марта 2011

Я склонен думать, что «-1» в форме идентификатора является корнем вашей проблемы. Однако не только «-1», почему идентификатор формы отображается с «-» вместо «_», как это делается в остальной части кода. Решите это, и ваша проблема должна быть исправлена.

К сожалению, я еще не использовал Drupal (только Joomla). Я бы попытался изменить код, чтобы он соответствовал тому, что идентифицируется как идентификатор формы (fantasy-stock-buy-me-form-1) вместо того, что у вас есть в настоящее время.

...