2009-08-20 4 views
1

現在、以下のコードが実行されている場合:"drupal_set_message"メッセージをすぐに表示させますか?

drupal_set_message("TEST"); 

を一度だけ、ページがリフレッシュされた、メッセージがページに表示されます。

私は現在、このメソッドをajax呼び出しで実行しています。したがって、現在のページは変更されません。だから、私はこのメソッドが呼び出された後、私はすぐにエラーメッセージを表示する必要があります私のAJAX呼び出しに含める方法が必要です。

いいえ、「エラー」divを任意の値に設定することで手動で行うのではありません。私はメッセージのエフェクトを使用しているので、Drupalのようにメッセージが表示されるように、drupalにプラグインする必要があります。

誰でも?

+0

あなたのクエストの結果が気に入らないかもしれませんが、回答を更新しました。 – googletorp

答えて

1

私はこれがあなた自身に尋ねたthis questionの重複であると信じていますが、ちょっとだけ正確に言いました。私の答えはまだこの答えに当てはまります。

基本的に、drupal_set_messageを使用するすべてのAJAXフープを実行する理由はありませんが、遅くなるだけです。 drupal_set_messageを使用すると、drupal_set_messageから生成されたため、挿入するHTMLに反応するmessagefxモジュールが得られません。 ajaxを呼び出すことなくjavascriptでhtmlを直接生成して入力し、関連するjs関数を呼び出してfxを追加する方がずっと速く簡単です。

編集:あなたが求めている何

は不可能である、あなたはDrupalは(drupal_set_messageからのメッセージを表示するために取得することはできません)二つの理由から、その場で効果を持つ:

  1. DrupalのですPHPを使用してページに新しいコンテンツを取得する唯一の方法は、ページをリロードすることまたは新しいコンテンツを読み込むことです。
  2. Messagefxは、ページのロード時に作成されたメッセージを対象とする単純なjsを実行することで機能します。したがって、drupalでページを更新して新しいメッセージを印刷することができたとしても、messagefx 。

私が説明したように目標を達成することができますが、ここで書いたものに合わせて最適化するために多少変更することになります。しかし、jQueryのappend()、prepend()関数などを使わずに、新しいメッセージを画面に表示することはできません。だから、私が記述したようにするか、似たようにするかを決める必要があるかと思います。

また、あなたが考慮しなければならないことの1つは、jsまたはdrupalを介してhtmlを入力/入力するかどうかは、最終結果に関しては本当に重要ではありません:htmlで書かれたページ。

+0

私がこれをやりたい理由は以下の通りです:ユーザーはモジュール内の設定を変更し、それは自分のコードに反映されません。私はそれをすべて集中化し、プラグインの変更がページ自体に反映されるようにします。私はそれが単なる単純なjavascriptだった場合、はい、それはajaxなしで速くなるが、残念ながら、それはありません。 – coderama

+0

p.s.重複して申し訳ありませんが、一度質問に答えが少なくなると、人々はそれが解決したと思います。だから私の質問をもっと正確にすると、それが応答になるかもしれないと思った。 – coderama

+0

@RD。私の経験では、あなたの質問をより正確にするために編集することはより多くの読者を招いてしまいますが、新しいより正確で重複した質問をすることは、 – Shawn

1
drupal_get_messages($type = NULL, $clear_queue = TRUE) 

エラーdivを設定するか、何らかの方法で表示する必要がありますが間違っていない限り、間違っています。

コメント後の編集:

OH!通常、メッセージはpage.tpl.phpのページロード時に表示されるので、すぐに表示されるようにdiv内に手動で配置する必要があります。

drupalフックをすべてトリガするために、適切なパラメータを渡すそれぞれのテーマでtheme()を呼び出すことができ、ページに配置する正しいHTMLを返します。あなたのテーマから印刷されているかのように、通常はページに表示されているように、テーマを呼び出すと、page.tpl.phpに余分な変更はありません。

+0

あなたは誤解していると思います。私はページaからページb経由でdrupals_set_messagesを呼び出すajax呼び出しを持っています。ページbが呼び出された後、hasntは変更されます。ページ上では、あるタイプのJAVASCRIPT呼び出しが必要で、ページ上のセッションにメッセージを表示する必要があります。それは理にかなっていますか? – coderama

+0

O ...私はそこにあなたがちょうどそれらを得るように言っているのを見る。そんなこと知ってる。私はそれらを得ることができます。私は画面に表示するために内部のドリブン機能を呼び出すことによってそれらを表示したいです。エラーメッセージを画面に表示するには、drupalが何かする必要があります。私の質問は何ですか? – coderama

+0

私の投稿を編集してコメントに対処しました – McAden

1

ビューのプレビューやコンポーネントの編集時に、ビューがメッセージを表示する方法が問題だと思います。これは、Views Handlerのコードにdsm()ステートメントを入れ、デバッグに関連する出力を表示するのに非常に便利です。

ビューはこのようにそれをしない:あなたはあなたのAJAXコールバックであなたのコードの特殊性に依存していることを印刷

if ($messages = theme('status_messages')) { 
    $display = '<div class="views-messages">' . $messages . '</div>'; 
} 

関連する問題