コンテンツタイプによって自動的に生成されるフォームがあります。 form_submit関数を実行して、データベースに保存するデータを入力/変更したいと思います。
Content-typeには既にこれらのフィールドが設定されていますが、ユーザー入力ではなく、form_submit関数でそれらを決定してほしいです。
フォーム送信関数を取得できますが、クエリ全体を自分で記述せずに、送信される値の配列に追加する方法がわかりません。取得する必要がある変数と、これを行うためにそれらを変更する方法は?
より具体的には.. form_alterで、これは私が望むことを行います。 $form["field_org_id"]["und"][0]['value']['#default_value'] = $org->id;
しかし、form_submitで同等のサイト外処理を行うにはどうすればよいですか? (これはコンテンツ追加フォームであり、クエリ全体を書き換えないことを望んでいます)
$form['#submit'][]='my_submit'
そしてあなたのコードを書きなさい:
function my_submit($form, &$form_state) {
// your code
}
FORM_FUNCTION_submit()関数は、プレフィックスジェネレーター関数を含むフォームが送信されると自動的に起動します。
function generate_special_form(){ // this function name is "FORM_FUNCTION" above
$form = array();
$form['field_org_id'] = array(
'#type' => 'textfield',
'#title' => 'Organisation',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
return $form;
}
その関数がサブミットすると、2つのパラメーターを指定して関数generate_special_form_submit()が自動的に呼び出され、次のようにサブミットされた値を取得できます。
function generate_special_form_submit($form, &$form_state){
// Form above was submitted, now lets clean up $form_state['values'],
// that's the submitted values in an associative array.
form_state_values_clean($form_state);
// And here is the value that was submitted:
drupal_set_message($form_state['values']['field_org_id']);
}
コアで生成されたフォームを変更しようとしているようです。その場合は、hook_form_alterを使用して$ form ['#submit']値を上記のJibranアウトラインとして追加します。