Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
tasker

Передача переменной в шаблон 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, в отдельной теме сегодня опубликую.

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...