Drupal form_submit和default_value

时间:2010-01-20 18:40:04

标签: drupal form-submit default-value

我有一个简单的表格:

function mymodule_test_form(&$form_state, $nid) {
  form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Click me!',
  );
  $form['mymodule_status'] = array(
    '#type' => 'select',
    '#attributes' => array('class' => 'myclass'),
    '#default_value' => variable_get('mymodule_status', 0),
    '#options' => array('one', 'two', 'three', 'four', 'five'),
  );
  return $form;
}

function mymodule_test_form_submit($form, &$form_state) {
  global $user;
  db_query("INSERT INTO {mymodule} (nid, uid, number, created) VALUES (%d, %d, %d, " . time() . ")", $nid, $user->uid, $status);
}

在我的node-contenttype.tpl.php文件中,我打印drupal_get_form('mymodule_test_form',$ node-> nid)。顺便说一下,它是在模板中打印drupal_get_form的正确方法吗?我尝试将drupal_get_form添加到hook_nodeapi视图状态,但没有输出,所以我最终将其打印在模板中。

另一件事是默认值,我不知道如何使用它。 variable_get始终为0.我是否需要创建自己的自定义查询并将其设置为我的默认值?我认为default_value是由drupal或其他东西自动检索的......

希望我能得到一些帮助。感谢。

编辑:发现节点ID在:$ form ['#parameters'] [2]

1 个答案:

答案 0 :(得分:1)

使用variable_get访问先前使用variable_set设置的值。因此,variable_get没有返回任何内容,因为没有名为mymodule_status的先前设置的变量。请参阅http://api.drupal.org/api/function/variable_get/6

我不确定,但似乎您希望默认值为用户先前设置的状态(如果该用户已设置它)。您需要对该案例进行查询。



function mymodule_test_form(&$form_state, $nid) {
  global $user;
  form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Click me!',
  );

  $query = "SELECT number FROM {mymodule} WHERE nid = %d AND uid = %d";
  $result = db_query($query, $nid, $user->uid);

  if ($result) $status = db_result($result);
  if ($status) $default_value = $status;
  else $default_value = 0;

  $form['mymodule_status'] = array(
    '#type' => 'select',
    '#attributes' => array('class' => 'myclass'),
    '#default_value' => $default_value,
    '#options' => array('one', 'two', 'three', 'four', 'five'),
  );
  return $form;
}

同样在你的提交功能中,你需要引用$ form_state ['values'] ['mymodule_status']而不是$ status。