0

関数を含むカスタム モジュールを作成しましたhook_submit。この時点で、リダイレクトせずに別のページ/フォームをロードすることは可能ですか?

その理由は、submit 関数のロジック内にあり、別のページに渡したい変数がありますが、データのポスト/取得には適していない複雑なデータ構造 (オブジェクト、配列など) で構成されています。

ありがとう

4

2 に答える 2

0

hook_submit()は、フォーム処理のチェーンの最後尾です。それが任務を完了したら、2つのオプションがあります:リダイレクト(drupal_goto()を介して、または$ form ["#redirect']を返すことによって)別のページにリダイレクトするか、何もしません。この場合、送信ボタンをクリックしたページは次のようになります。リロードしました。

リダイレクト先にデータを渡すためのいくつかのオプションがあります。$_SESSIONとデータベースが最も頻繁に使用されます。javascriptのDrupal.settingsオブジェクトに複雑なデータ値を設定するオプションもありますが、この場合、最終目標がPHPを介してその情報を解析することである場合、それほど多くは購入できません。

最終目標についての具体的な情報がなければ、具体的なアドバイスを提供することは困難ですが、$ _ SESSIONまたはデータベースをキャッシュとして使用することができないと仮定すると、コアFAPIとctoolsのそれぞれのマルチの実装を検討することを検討してください。 -追加のガイダンスのためのパートフォーム。

于 2012-10-12T05:54:28.693 に答える
0

Drupal では、フォームが送信されるパスを決定できます。このために使用できます

$form['#action'] = url("<another page>") ;

フォーム内で送信した後、別のページに移動しても、そのフォームからすべての投稿値を取得できます。$_POST['<element_name>']さらにポスト値を取得するために使用します。

これが役立つことを願っています。

于 2012-10-12T17:51:17.680 に答える