Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Передача переменной в шаблон showCard и инициализация шаблона

И снова здравствуйте!

 

У шаблона listWarnings имеется переменная $canWarn которая удобно используется в теле шаблона через условия типа <if test="canWarn:|:$canWarn">

 

Мне необходимо задействовать эту переменную в шаблоне showCard.

 

Простое добавление переменной приводит к ошибке, поскольку шаблон инициализируется с одной переменной таким кодом:

 

$this->returnHtml( $this->registry->getClass('output')->getTemplate('profile')->showCard( $member ) );

 

Как можно добавить в этот код инициализации шаблона вторую переменную? Просто $canWarn не срабатывает, $this->canWarn тоже.

 

Мне кажется, что эта переменная видна только в том классе, в котором она создана. Шаблон showCard выводится в файле admin/applications/members/modules_public/ajax/card.php а шаблон listWarnings в файле admin/applications/members/modules_public/profile/warnings.php

 

Спасибо!

Рекомендованные сообщения

Обратите внимание

"Board url", указанный вами в профиле, некорректен, либо недоступен на данный момент. Пожауйста, заполните его, потому что он скорее всего потребуется при диагностике вашей проблемы.

Вы не до конца понимаете суть работы шаблонизатора. Сначала проводятся какие-то вычисления, собираются все необходимые данные, потом эти данные передаются в шаблон для последующего формирования исходного кода страницы. Не достаточно просто передать переменную "$canWarn" с аналогичным названием которая используется где-то в другом месте. Сначала вычислить, присвоить результат, потом уже передать в шаблоне.

Локальные переменные доступны только в текущем методе.

 

Весь код по обработке $canWarn начинается с комментария /* Can we view? */ по /* Load reasons */

 

ПС

'select' => 'count(*) as dracula'

Lol :)

  • Автор

Да, видел дракулу эту. Про шаблоны всё прекрасно понял и задал конкретный вопрос. Просто PHP не знаю толком. Если в том классе объявить $canWarn как global не поможет? Или без инициализации класса это бесполезно? Пока сделал всё без $canWarn и просто отобразил кнопку только админам. Но так не очень нравится и хочется разобраться в сути вопроса.

 

Без $canWarn кнопка отображается даже в профиле пользователя, которого настройками запрещено предупреждать, поэтому и не нравится такой обходной вариант.

Если в том классе объявить $canWarn как global не поможет? Или без инициализации класса это бесполезно?

Не поможет, это два разных преставления и отрабатывают они в разных моментов.

Подключить класс не получится, потому что он участвует в генерации исходного кода, это не отдельное АПИ.

В этом случае придется продублировать код вычисления переменной в нужном месте.

  • Автор

Спасибо! Странная архитектура. В идеале надо сделать отдельный класс, который можно инициализировать и в котором будет глобальная переменная $canWarn. Или добавить её инициализацию в другой класс, который всегда инициализируется и ничего не выводит.

  • Автор

Мелкий вопрос, а зачем в условиях типа этого <if test="isadmin:|:$this->memberData['g_access_cp'] == 1"> вот эта часть isadmin:|:

Спасибо! Странная архитектура.

Архитектура как раз нормальная.

 

В идеале надо сделать отдельный класс, который можно инициализировать и в котором будет глобальная переменная $canWarn.

Зачем? Эта проверка выполняется только в одном месте, при выдаче предупреждений, и нигде больше. Так что особой необходимости для выведения в отдельный класс нету.

 

Мелкий вопрос, а зачем в условиях типа этого вот эта часть isadmin:|:

Метка для хуков

  • Автор

Зачем? Эта проверка выполняется только в одном месте, при выдаче предупреждений, и нигде больше. Так что особой необходимости для выведения в отдельный класс нету.

 

Ну вот понадобилось мне использовать эту переменную в других шаблонах и не могу. Скажем, объект (массив) с данными пользователя виден везде, он типа глобального. Это позволяет использовать фишки типа $this->memberData['is_mod'] или $author['g_access_cp'] почти во всех шаблонах.

Ну вот понадобилось мне использовать эту переменную в других шаблонах и не могу.

Мало ли кому что может понадобится в другом шаблоне. Там где это нужно выведено в отдельное АПИ.

Массив пользователя это важные данные, по суть приложение на нем держится. А $author['g_access_cp'] локальная переменная, хотя она может передаваться во многих шаблонах.

  • Автор

Хорошо. Спасибо!

 

Могу тут описать как сделал такие кнопки предупреждений.

 

post-54874-0-19618500-1375475364_thumb.jpg

post-54874-0-77511000-1375475372_thumb.jpg

 

Если надо кому-нибудь.

А можно ? очень интересно мне

  • Автор

@mvArts, в отдельной теме сегодня опубликую.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.