2016-07-07 8 views
1

以下は私が今まで行ってきたことと私がしようとしていることの情報です。私は今drupalのNodejs統合モジュールでブロック内のテキストを更新する8

  • NodejsモジュールとDrupalの8を行うまでやっていること

    。モジュールの例が正常に動作しています。

  • drupal 8でシンプルなモジュールを作成しました。簡単な
    フォームと呼ばれるフォームで構成されています。送信機能では、メッセージをチャネルにエンキューするnodejsモジュール関数と呼ばれます。
  • nodejsエンキューメッセージで定義されたJavascriptコールバック関数が作成されました。テキストフォームを送信すると、私は

    • をacheiveしようとしている何

    。ただ、drupalの8のブロックを更新する(世界ハローとブロック内容を更新します。)

問題nodejsに関連付けられている

  • 私のjavascriptのコールバックが呼び出されていません。

以下は私のコードです。

ファンクションコード

public function submitForm(array &$form, FormStateInterface $form_state) { 
/*$message->broadcast = TRUE; 
* This would normally be replaced by code that actually does something 
* with the title. 
*/ 
$title = $form_state->getValue('title'); 
$message = (object) array(
    'channel' => 'example', 
    'broadcast' => TRUE, 
    'callback' => 'example', 
    'data' => array(
      'message' => 'Hello World' 
    ), 
); 
nodejs_enqueue_message($message); 
drupal_set_message(t('You specified a title of %title.', ['%title' => $title])); 
} 

Javascriptのコールバックコード

(function ($) { 
Drupal.Nodejs.callbacks.example = { 
    //grab the message and inject into the header 
    callback: function (message) { 
     console.log('simple example'); 
     if(message.channel == 'example') { 
      $('#nodejs-selector').html(message.data.body); 
     } 
    } 
}; 
})(jQuery); 

この上の任意のヘルプに提出、私は非常に感謝されます。誰かが必要な場合は、これに関する詳細情報を提供したいと思います。

答えて

1

あなたは

+0

message.data.bodyとしてメッセージ本文にアクセスするには

$message = (object) array( 'channel' => 'example', 'broadcast' => TRUE, 'callback' => 'example', 'data' => array( 'body' => 'Hello World' ), ); 

として$メッセージを変更する必要がありますああ:)が問題を指摘いただきありがとうございます解決しました。 – FaNtAMode

関連する問題