tasker Posted August 2, 2013 Share Posted August 2, 2013 И снова здравствуйте! У шаблона 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 Спасибо! Link to comment Share on other sites More sharing options...
Bot Posted August 2, 2013 Share Posted August 2, 2013 Обратите внимание "Board url", указанный вами в профиле, некорректен, либо недоступен на данный момент. Пожауйста, заполните его, потому что он скорее всего потребуется при диагностике вашей проблемы. Link to comment Share on other sites More sharing options...
siv1987 Posted August 2, 2013 Share Posted August 2, 2013 Вы не до конца понимаете суть работы шаблонизатора. Сначала проводятся какие-то вычисления, собираются все необходимые данные, потом эти данные передаются в шаблон для последующего формирования исходного кода страницы. Не достаточно просто передать переменную "$canWarn" с аналогичным названием которая используется где-то в другом месте. Сначала вычислить, присвоить результат, потом уже передать в шаблоне. Локальные переменные доступны только в текущем методе. Весь код по обработке $canWarn начинается с комментария /* Can we view? */ по /* Load reasons */ ПС'select' => 'count(*) as dracula'Lol :) Link to comment Share on other sites More sharing options...
tasker Posted August 2, 2013 Author Share Posted August 2, 2013 Да, видел дракулу эту. Про шаблоны всё прекрасно понял и задал конкретный вопрос. Просто PHP не знаю толком. Если в том классе объявить $canWarn как global не поможет? Или без инициализации класса это бесполезно? Пока сделал всё без $canWarn и просто отобразил кнопку только админам. Но так не очень нравится и хочется разобраться в сути вопроса. Без $canWarn кнопка отображается даже в профиле пользователя, которого настройками запрещено предупреждать, поэтому и не нравится такой обходной вариант. Link to comment Share on other sites More sharing options...
siv1987 Posted August 2, 2013 Share Posted August 2, 2013 Если в том классе объявить $canWarn как global не поможет? Или без инициализации класса это бесполезно?Не поможет, это два разных преставления и отрабатывают они в разных моментов.Подключить класс не получится, потому что он участвует в генерации исходного кода, это не отдельное АПИ.В этом случае придется продублировать код вычисления переменной в нужном месте. Link to comment Share on other sites More sharing options...
tasker Posted August 2, 2013 Author Share Posted August 2, 2013 Спасибо! Странная архитектура. В идеале надо сделать отдельный класс, который можно инициализировать и в котором будет глобальная переменная $canWarn. Или добавить её инициализацию в другой класс, который всегда инициализируется и ничего не выводит. Link to comment Share on other sites More sharing options...
tasker Posted August 2, 2013 Author Share Posted August 2, 2013 Мелкий вопрос, а зачем в условиях типа этого <if test="isadmin:|:$this->memberData['g_access_cp'] == 1"> вот эта часть isadmin:|: Link to comment Share on other sites More sharing options...
siv1987 Posted August 2, 2013 Share Posted August 2, 2013 Спасибо! Странная архитектура.Архитектура как раз нормальная. В идеале надо сделать отдельный класс, который можно инициализировать и в котором будет глобальная переменная $canWarn. Зачем? Эта проверка выполняется только в одном месте, при выдаче предупреждений, и нигде больше. Так что особой необходимости для выведения в отдельный класс нету. Мелкий вопрос, а зачем в условиях типа этого вот эта часть isadmin:|:Метка для хуков Link to comment Share on other sites More sharing options...
tasker Posted August 2, 2013 Author Share Posted August 2, 2013 Зачем? Эта проверка выполняется только в одном месте, при выдаче предупреждений, и нигде больше. Так что особой необходимости для выведения в отдельный класс нету. Ну вот понадобилось мне использовать эту переменную в других шаблонах и не могу. Скажем, объект (массив) с данными пользователя виден везде, он типа глобального. Это позволяет использовать фишки типа $this->memberData['is_mod'] или $author['g_access_cp'] почти во всех шаблонах. Link to comment Share on other sites More sharing options...
siv1987 Posted August 2, 2013 Share Posted August 2, 2013 Ну вот понадобилось мне использовать эту переменную в других шаблонах и не могу.Мало ли кому что может понадобится в другом шаблоне. Там где это нужно выведено в отдельное АПИ.Массив пользователя это важные данные, по суть приложение на нем держится. А $author['g_access_cp'] локальная переменная, хотя она может передаваться во многих шаблонах. Link to comment Share on other sites More sharing options...
tasker Posted August 2, 2013 Author Share Posted August 2, 2013 Хорошо. Спасибо! Могу тут описать как сделал такие кнопки предупреждений. Если надо кому-нибудь. Link to comment Share on other sites More sharing options...
mvArts Posted August 2, 2013 Share Posted August 2, 2013 А можно ? очень интересно мне Link to comment Share on other sites More sharing options...
tasker Posted August 3, 2013 Author Share Posted August 3, 2013 @mvArts, в отдельной теме сегодня опубликую. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now