(Symfony 4) Невозможно получить доступ к элементу массива const в ветке

У меня есть константный массив, который мне нужен для доступа к ветке, вот мой класс констант:

class Constants{

public const NOTIFICATIONS_LIKE_POST = 0;
public const NOTIFICATIONS_COMMENT_POST = 1;
public const NOTIFICATIONS_REPLY_COMMENT = 2;
public const NOTIFICATIONS_POSTED_NEW_POST = 3;
public const NOTIFICATIONS_POSTED_NEW_PHOTO = 4;
public const NOTIFICATIONS_POSTED_NEW_VIDEO = 5;
public const NOTIFICATIONS_POSTED_NEW_GALLERY = 6;

public NOTIFICATIONS_ARRAY= array(
self::NOTIFICATIONS_LIKE_POST => " liked your ",
self::NOTIFICATIONS_COMMENT_POST => " commented on your ",
self::NOTIFICATIONS_REPLY_COMMENT => " replied to your ",
self::NOTIFICATIONS_POSTED_NEW_POST => " posted a new ",
self::NOTIFICATIONS_POSTED_NEW_PHOTO => " posted a new ",
self::NOTIFICATIONS_POSTED_NEW_VIDEO => " posted a new ",
self::NOTIFICATIONS_POSTED_NEW_GALLERY => "posted a new ");

}

Вот как это выглядит, когда я хочу добавить его в свою веточку:

{% for notification in notifications %}

<div class="notice" onclick="window.open('single-post.html');">
<div class="header">
<img src="{{ getAvatar(notification.fromUser) }}" width="128" class="avatar">

<div class="content">
<a href="../profile.html" class="user">{{ notification.fromUser.username }}</a>
<!-- so specifically the following line -->
{{ dump(constant("App\\Constants::NOTIFICATIONS_ARRAY[" ~ notification.activity ~ "]")) }}

<div class="footer">
notification.time
</div>
</div>
</div>
</div>

{% endfor %}

Просто чтобы показать вам, что ветка может «видеть» этот массив, вот результат:

{{ dump(constant("App\\Constants::NOTIFICATIONS_ARRAY")) }}

введите описание изображения здесь

Однако, когда я пытаюсь получить доступ к этому массиву с индексом (вот как выглядит код 🙂

<!-- In this case notification.activity is 2 -->
{{ dump(constant("App\\Constants::NOTIFICATIONS_ARRAY[" ~ notification.activity ~ "]")) }}

Я получаю следующую ошибку:

An exception has been thrown during the rendering of a template ("Warning: constant(): Couldn't find constant App\Constants::NOTIFICATIONS_ARRAY[2]").

Может быть, это просто синтаксис PHP? Я не знаю, почему я не могу получить доступ к конкретному элементу моего массива const.

1

Решение

Индекс массива не является частью имени константы. Константа является массивом:

{{ dump(constant("App\\Constants::NOTIFICATIONS_ARRAY")[notification.activity]) }}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector