2017-08-03 13 views
0

Drupal 8の新機能です。カスタムコンテンツタイプ "質問"の下でフォームを変更しようとしています。このフォームには、 "node-question-form"というIDがあります。Drupalでフォームの変更フックを追加する方法8

私はモジュールをセットアップし、hook_FORM_ID_alter()を追加しようとしましたが、呼び出されることはありません。最も単純なフックでさえも機能しません。例:

function constellator_form_alter(&$form, &$form_state, $form_id){ 
    echo "alter the form"; exit; 
} 

ここで、「constellator」はモジュール名です。

私は午前中に立ち往生していましたが、何も私のために働いていませんでした。どんな助けも大いに訴えられます。フォームが作成され、画面上に表示する前にされている間

乾杯

+0

このモジュールは有効になっていますか? –

答えて

1

hook_form_alter()とhook_FORM_ID_alter()が呼び出されます。
これらの関数は、.moduleファイルに書き込まれます。
フック関数を書き込んだ後、常にキャッシュをクリアしてください。これにより、Drupalはそのような関数が宣言されたことを理解します。
drushバージョン8を使用している場合はManage-> Drupal 8 logo->すべてのキャッシュをフラッシュしてください。をクリアしてキャッシュをクリアしてください。 関数が呼び出されているかどうかを確認できます。 これを確認する最も良い方法は、Develモジュールをインストールして有効にすることです。 Develと一緒に、Kintがインストールされています。 Admin UIからKintも有効にしてください。

function constellator_form_alter(&$form, &$form_state, $form_id){ 
    kint($form); 
} 

これは、ページ内のすべてのフォームのためのすべてのフォーム変数を出力します:あなたはフックが呼び出されているか、次の方法でないかどうかを確認することができ、ことを行った後 。 ページ内の特定のフォームをターゲットにする場合は、たとえば。あなたの形成、ノード・質問形式、タイプ:

function node_question_form_form_alter(&$form, &$form_state, $form_id){ 
    kint($form); 
} 

あなたはページのソースコードを見ることで、任意の手間をかけずに、関数が呼び出されているかどうかを確認したりすることはできませんエコー、あなたがやった方法は、使用してGoogle Chromeの場合はCtrl + fのようなブラウザの検索オプションを使用して、エコーしたテキストを検索します。

+0

すごいviviv、本当に役に立ちました。 –

関連する問題