아, 이건 아마 뭔가 간단 할 지 모르지만, 그것은 나를 미치게합니다. hook_nodeapi()를 사용하여 노드에 삽입하는 간단한 폼 (그냥 제출 버튼)이 있습니다. 그것은 제대로 삽입 가져옵니다, 그리고 내가 제출할 때 페이지가 새로 고침,하지만 그것은 결코 form_submit() 함수를 치고있다. 코드는 다음과 같습니다.Drupal 양식 제출 기능이 호출되지 않는 이유는 무엇입니까?
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) . '</pre>';
drupal_set_message(t($message));
}
제출 기능에 echo와 die()를 추가하려고 시도했지만 확실히 호출되지 않습니다. 또한 $ form [ '# submit'] 선언을 생략하려고했습니다. 기본값은 처리해야하지만 아무 소용이 없습니다. 나는 바보 같은 것을 놓치고 있어야한다는 것을 안다. 어떤 아이디어?
또한, 이상한 듯 한 가지 형태는 다음과 같은 태그로 렌더링됩니다 있다는 것입니다 :
<form action="/MLMBid/node/5" accept-charset="UTF-8" method="post" id="fantasy-stocks-buy-me-form-1">
은 "-1"양식 ID에 추가 정상이 가지고인가요?
함수 이름을 변경할 수 없습니다. 함수 이름에 대시가 잘못되었습니다. 드루팔 (Drupal은 폼을 렌더링 할 때 밑줄을 대시로 변환 한 다음 다시 함수를 호출하도록 변환합니다. 하지만 그래, "-1"이상한 ... 나는 그것이 왜 나타나는지 더 자세히 살펴볼 것이다. – SenorPuerco
-1은 동일한 양식이 페이지에서 여러 번 렌더링 될 수있는 경우 고유 한 ID임을 보장합니다. –
충분히 재미있어 답은 -1입니다. – B2F