0

私は簡単な形をしています:

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ビューステートに追加しようとしましたが、何も出力されないため、テンプレートに出力することになりました。

もう1つはデフォルト値ですが、その使用方法がわかりません。variable_getは常に0です。独自のカスタムクエリを作成し、それをデフォルト値として設定する必要がありますか?default_valueはdrupalか何かによって自動的に取得されると思いました...

私が助けを得ることができることを願っています。ありがとう。

編集:ノードIDが下にあることがわかりました:$ form ['#parameters'] [2]

4

1 に答える 1

1

variable_getを使用して、以前にvariable_setで設定された値にアクセスします。したがって、mymodule_statusという名前の以前に設定された変数がないため、variable_getは何も返しません。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;
}

また、送信関数では、$statusではなく$form_state['values']['mymodule_status']を参照する必要があります。

于 2010-01-21T05:22:14.140 に答える