Sen*_*rco 2 php drupal form-api drupal-6 nodeapi
呃,这可能很简单,但它让我发疯.我有一个简单的表单(只是一个提交按钮),我使用hook_nodeapi()插入节点.它被正确插入,并在我提交时页面刷新,但它永远不会访问form_submit()函数.这是代码:
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));
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试在提交函数中添加一个echo和die(),它绝对不会被调用.我也尝试不使用$ form ['#submit']声明,因为默认应该处理它,但无济于事.我知道我一定会错过一些愚蠢的东西.有任何想法吗?
此外,有一件事似乎很奇怪,表单使用以下标记呈现:
<form action="/MLMBid/node/5" accept-charset="UTF-8" method="post" id="fantasy-stocks-buy-me-form-1">
Run Code Online (Sandbox Code Playgroud)
这是正常的,将"-1"附加到表单ID?
终于想通了.创建提交按钮的部分:
$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
);
Run Code Online (Sandbox Code Playgroud)
我从教程中复制了部分内容,显然是行
'#submit' => TRUE
Run Code Online (Sandbox Code Playgroud)
不应该在那里.它覆盖了表单提交处理程序,它使drupal尝试查找名为TRUE的函数.知道这是愚蠢的事.
| 归档时间: |
|
| 查看次数: |
5863 次 |
| 最近记录: |