(Symfony 4) Невозможно получить доступ к элементу массива const в ветке - PullRequest
0 голосов
/ 01 февраля 2019

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

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")) }}

enter image description here

Однако когдаЯ пытаюсь получить доступ к этому массиву с помощью индекса (вот как выглядит код:)

<!-- 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 Ответ

0 голосов
/ 01 февраля 2019

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

{{ dump(constant("App\\Constants::NOTIFICATIONS_ARRAY")[notification.activity]) }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...