0

私はDrupalにかなり慣れていません。

フォームを事前入力する2つのメソッド、つまりhook_form_alter()hook_prepare()に出くわしました。

私はドキュメントを読みました、そして私は両方の方法が私が望むものを達成することができると信じています。

これらの2つの関数は何のために作成されたのでしょうか。指定機能などのために作られたものはありますか?

私が理解している限り、hook_form_alter()は現在のフォームの状態を取得し、それに基づいて動作します。これは、この関数が実際のフォーム自体を変更するために作成されていることを意味しますか?特定のフィールドを変更したり、カスタムフィールドを追加したりするのが好きですか?

一方、Hook_prepare()は、ノードを取得し、追加/編集フォームに入力する前にノードを操作します。

フォームに事前入力しようとしている場合を想定します。hook_prepare()はそれを行うための「正しい」方法でしょうか?それとも本当に問題ではありませんか?また、コンテンツタイプではなく、Webフォームモジュールを使用している場合はどうなりますか?

4

1 に答える 1

1

2 つのフックは完全に異なり、まったく同じことを行うわけではありません。

hook_form_alter()を使用してフォームが作成されるたびに呼び出されますdrupal_get_form()。モジュールは、構造化された方法で、フォームに関連する要素またはメタデータ (フィールド プロパティの操作、AJAX の追加、CSS プロパティの追加など) を変更できます。フックは、それを実装するモジュールに対して呼び出されます。

逆に、hook_prepare()追加/編集のためにエンティティ フォームに渡される前に、ノード オブジェクトに作用するためのものです。これは、準備中のノード タイプを定義するモジュールに対してのみ呼び出されます。そのため、既知のカスタム「ノード タイプ モジュール」を定義していない限り、このフックは呼び出されません。

簡単に言えば、99% の時間で を使用するということhook_form_alter()です。hook_prepare()Webform モジュールを使用している場合、状況に当てはまらない非常に特定の状況下でのみ方程式に入ります。

于 2012-09-05T08:38:30.273 に答える