web-dev-qa-db-ja.com

メッセージの確認方法が存在する

drupal 7のテンプレートにメッセージがあるかどうかを確認したい。7ページテンプレート変数にグローバル変数があった messages

drupal 8になりました。8messages変数にpage--front.html.twigは常に空です。別の方法は、領域の強調表示をチェックすることです(ステータスメッセージブロックが強調表示された領域にあるため)しかし、以下のステートメントは常にTRUEを返します。

    {% if page.highlighted %}
      {% block highlighted %}
        <div class="highlighted">{{ page.highlighted }}</div>
      {% endblock %}
    {% endif %} 

drupal 8のページにメッセージが存在することを確認する方法はありますか?

4
Yusef

_page.highlighted_変数にはメッセージ表示用のブロックデータ(_mytheme_messages_)が含まれていますが、ブロックレンダリングデータにはメッセージ自体が含まれていないため、メッセージの存在を確認する方法はありません。

ただし、現在のメッセージキューに基づいて、カスタム変数を drupal_get_messages() から挿入できます。

たとえば、MYTHEME.themeの場合:

_/**
 * Implements hook_preprocess_page() for page.html.twig.
 */
function MYTHEME_preprocess_page(array &$variables) {
  // Inject a flag based on the current message queue.
  $variables['available_messages'] = !empty(drupal_get_messages(NULL, FALSE));
}
_

page.html.twig内:

_{% if available_messages == true %}
   <!-- TODO: Add custom markup when there are messages -->
{% endif %}
_
6
Shawn Conn