Форум русской поддержки Joomla!® CMS
04.12.2016, 16:20:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Как создать глобальную переменную между компонентами Joomla?

 (Прочитано 223 раз)
0 Пользователей и 1 Гость смотрят эту тему.
romagromov
Завсегдатай
*****

Репутация: +6/-3
Online Online

Пол: Мужской
Сообщений: 474



« : 28.03.2016, 12:45:14 »

Здравствуйте!
Мне нужно из одного компонента передать в другой значение переменной.
Как такое можно осуществить?
Спасибо.
Записан
Gruz
JComments Tester
*

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #1 : 28.03.2016, 14:18:33 »

Мало информации.
Если переменная передаётся при загрузке одной страницы, без редиректов, то можно передать через $GLOBALS, желательно с использованием фреймворка Joomla.
Записать в Globals переменную с именем ##mygruz20160216061544 и значением true
Код:
$app = JFactory::getApplication();
$app->set('##mygruz20160216061544',true);

Достать из Globals эту переменную. Если такой переменной нет, то использовать значение false
Код:
$app = JFactory::getApplication();
$var = $app->get('##mygruz20160216061544',false);


Если же имеет место перезагрузка страницы, например, при сохранении статьи не виден, но присутствует редирект, то $GLOBALS обнулиться. Тогда нужно использовать сессию.
Сохранить в сессию в одном компоненте
Код:
$session = JFactory::getSession();
$session->set('MyVarName',$variable,'some_unique_name_to_be_sure_your_MyVarName_does_not_intersect_with_other_variable_names');

Достать из сессии в другом компоненте
Код:
$session = JFactory::getSession();
$var = $session->get('MyVarName',$default_value,'some_unique_name_to_be_sure_your_MyVarName_does_not_intersect_with_other_variable_names');
Где $default_value - значение по умолчанию, если в сессии ничего не нашлось.

Ну и неплохо бы после этого вычистить переменную из сессии
Код:
$session->clear('MyVarName','some_unique_name_to_be_sure_your_MyVarName_does_not_intersect_with_other_variable_names');
Записан
romagromov
Завсегдатай
*****

Репутация: +6/-3
Online Online

Пол: Мужской
Сообщений: 474



« Ответ #2 : 28.03.2016, 14:49:11 »

Огромное спасибо за развернутый ответ.
Задача передать название материала из компонента Jdownloads в компонент Jcomments.
То есть оба компонента на одной странице подгружаются.
Я так понимаю первый вариант должен сработать.


Записан
Gruz
JComments Tester
*

Репутация: +165/-3
Offline Offline

Пол: Мужской
Сообщений: 1285


gruz@jabber.org | gruz.org.ua


« Ответ #3 : 28.03.2016, 15:54:50 »

По-моему JComments использует AJAX для подгрузки. Технически, это разные страницы подгружаются.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1444


« Ответ #4 : 28.03.2016, 16:37:56 »

Создайте константу или класс и цепляйте их откуда угодно - они имеют глобальную область видимости.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet