2016-12-31 14 views
0

私はhook_node_viewを使用する必要があるdrupal 8用のモジュールをビルドしています。フックは、それがメッセージを示している必要がありますよりも正しかった場合、私は、demo_form_node_viewから任意のメッセージを見ることができませんhook_node_viewが動作しません

<?php 

/** 
* @file 
* Demonstrates the possibilities of forms in Drupal 8. 
*/ 

use Drupal\Core\Form\FormStateInterface; 
use Drupal\Core\Entity\Node; 
use Drupal\Core\Entity\Display\EntityViewDisplayInterface; 
use Drupal\Core\Entity\EntityInterface; 

/** 
* Implements hook_form_alter() 
*/ 
function demo_form_form_alter(&$form, FormStateInterface $form_state, $form_id) { 
    drupal_set_message(t('Found a form with ID %form_id', array('%form_id' => $form_id))); 
} 

/** 
* Implements hook_node_view() 
*/ 
function demo_form_node_view(array &$build, \Drupal\Core\Entity\EntityInterface $entity, \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display, $view_mode) { 
    drupal_set_message(t('its working')); 
} 

/** 
* Implements hook_form_FORM_ID_alter(). 
* 
* Only alters the Search form 'search_block_form'. 
*/ 
function demo_form_form_search_block_form_alter(&$form, FormStateInterface $form_state, $form_id) { 
    $form['hello'] = array(
    '#markup' => t('Go ahead, try me ...') . '<br />', 
    '#weight' => -1, 
); 
} 

- :私は、次のコードを試してみました。私はdrupalに新しく、なぜdemo_form_node_viewが機能していないのか理解できません。

+0

念のために...あなたは新しいフック(例えばを追加した後にDrupalのキャッシュをクリアする必要があります'drush cr')。また、フックが呼び出されているのにメッセージが別の理由で表示されない場合は、設定されたメッセージ行をprint/echo行に置き換えてみてください。 –

答えて

0

まず、キャッシュをクリアすることを忘れないでください。第2に、タイプフックの実際のエンティティは、そのフックのページのどこかで使用されなければならないと考えてください。フォームを使って作業しているので、ノードをロードしていない可能性があります。

フックが呼び出されている可能性もありますが、リダイレクトやメッセージを消去するものがあるため、drupal_set_messageは機能しません(十分な環境がわかりません)。すぐにechoを試してから、すぐにexit;を試してください。

最後に、あなたは異なる効果あるかどうかを確認するために[hook_ENTITY_TYPE_view][1]のより一般的なバージョンである(hook_entity_viewを使用して試すことができます。

+0

ありがとう、hook_entity_viewを試しましたが、 8エコーを使用し、メッセージを表示します。 –

関連する問題