1

フォームに入力して送信したときに情報を収集して関数を実行するために必要なカスタム モジュールを作成しました。

2 つのテキスト領域とボタンがあります。

これは私が持っているもので、ページにうまく表示されます:

ファイル:myFunction.admin.inc

function myFunction_form($form)
{

    $form['pages'] = array(
    '#type' => 'fieldset',
    '#title' => t('Data'),
    '#collapsible' => FALSE,
    '#collapsed' => FALSE,
  );

    $form['pages']['title'] = array(
    '#type'          => 'textarea',
    '#title'         => t('Title'),
    '#rows'          => 5,
    '#resizable'    => FALSE,
  );

  $form['pages']['body'] = array(
    '#type'          => 'text_format',
    '#title'         => t('Body'),
    '#rows'          => 5,
    '#resizable'    => FALSE,
    '#format' => 'full_html',
  );

  $form['submit'] = array('#type' => 'submit', '#value' => t('Run Function'));

    myFunction($form);
    return $form;

}

function myFunction()
{
//This is where I use the data collected from my form and do what I need to do.
}

したがって、このフォームに欠けているもの (これについて間違っている場合は教えてください) は、フォームが記入されていることを確認し、そうでない場合はエラー メッセージを返す必要があることです。

function myFunction()フォームに入力されている場合は、前に追加するだけでフィールドデータを関数に正しく渡しましたreturn $form;が、これは間違った方法のようです。myFunction()フォームにエラーがある場合は実行したくありません。

カスタムモジュールのこの最後の部分で誰かが私を助けてくれませんか.

このモジュールはデータベースに何も追加しないことに注意してください。

繰り返しますが、これについて間違った方向に進んでいるかどうか教えてください。

4

3 に答える 3

0

はい、おそらく間違った方向に進んでいます。カスタムバリデータを追加し、次のような関数を送信する必要があります

<?php

$form['#submit'][] = my_submit_callback
$form['#validate'][] = my_validator_callback


function my_submit_callback($form, &$form_state) {
  // form_state array contains the submitted values
}
function my_validator_callback($form, &$form_state) {
  // form_state array contains the submitted values
  if ($form_state['values']['body'] == '') {
   form_set_error(...)
}
}

もちろん、 form_builder 関数から myFunction() 呼び出しを削除します

于 2013-03-11T14:47:15.727 に答える
0

次のようにアプローチします。

$form['#validate'][] = 'myCustomValidateFunction';
$form['#submit'][]   = 'myCustomSubmitFunction';

function myCustomValidateFunction($form, &$form_state) { 
  \\if validation was not passed use form_set_error()
}

function myCustomSubmitFunction($form, &$form_state) { 
   //submit logic, $form_state includes the values
}
于 2013-03-11T14:49:24.177 に答える