0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 1481 Просмотров
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Здравствуйте. В процессе обработки ajax-запроса в контроллере компонента необходимо получить доступ к параметрам активного пункта меню. При попытке сделать это с помощью инфтрукции:

Код
$menu_params->merge(JFactory::getApplication()->getMenu()->getActive()->params);
возникает ошибка PHP - Попытка обратиться к свойству необъекта.

Очевидно, что, в силу моего невысокого числа часов летного стажа на Joomla, делаю что-то не то, а параметры меню получить необходимо. Подскажите, пожалуйста, как это правильно сделать в контроллере компонента?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
возникает ошибка PHP - Попытка обратиться к свойству необъекта.
1. Никогда не переводите сообщения об ошибках (предупреждениях).
2. Всегда приводите код в контексте: что такое $menu_params, есть ли у него свойство merge?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
robert, контекст таков:

Код
$menu_params = JComponentHelper::getParams ('com_mycomponent');
$menu_params->merge(JFactory::getApplication()->getMenu()->getActive()->params);

использовал этот же код в модели другого пункта меню, там все работает без ошибок, а в данном контроллере приходит сообщение об ошибке: Trying to get property of non-object in ...

*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а просто
Код
$menu_params = JFactory::getApplication()->getMenu()->getActive()->params;
разве не достаточно?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
в том-то и дело, что данный код:

Код
JFactory::getApplication()->getMenu()->getActive()->params;

и является источником ошибки.

а просто
Код
$menu_params = JFactory::getApplication()->getMenu()->getActive()->params;
разве не достаточно?
А в даном случае настройки компонента по умолчанию учтуться или получатся только настройки пункта меню?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в том-то и дело, что данный код и является источником ошибки.
вы уверены? что выводит
Код
var_dump(JFactory::getApplication()->getMenu()->getActive());
?

А в даном случае настройки компонента по умолчанию учтуться или получатся только настройки пункта меню?
нет само собой, настройки компонента пройдут мимо. вы ж только сейчас говорите о параметрах компонента, тема то про параметры текущего пункта меню :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
вы уверены? что выводит
Код
var_dump(JFactory::getApplication()->getMenu()->getActive());
?
нет само собой, настройки компонента пройдут мимо. вы ж только сейчас говорите о параметрах компонента, тема то про параметры текущего пункта меню :)

var_dump выводит NULL.
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
ошибка локалиовалась до метода getActive () - он возвращает null, насколько я понял из документации по этому методу (с моим неидеальным английским), он вернёт объект пункта активного меню, если таковой был установлен, в противном случае null, что собственно и наблюдаем. Значит проблема в том, что пункт меню не установлен как активный, точнее контроллер не имеет доступ к этой информации (если я всё правильно понимаю). Задачей данного контроллера в разрабатываемом компоненте является обработка ajax-запроса отправляемого из шаблона активного пункта меню, параметры которого мне и необходимы, дабы в соответствии с ними отфильтровать данные и отправить их в качестве ответа. Как передать этому контроллеру информацию об активном пункте меню?
« Последнее редактирование: 19.06.2017, 09:50:08 от Inoken »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
тут надо бы понимать, какой вы в принципе пункт меню хотите видеть... я так понял, что тот пункт меню, с которого делается AJAX запрос? тогда передайте текущий
Код
JFactory::getApplication()->input->getInt('Itemid')
в AJAX запросе к вашему контроллеру

P.S. ага, ну после редактирования стало понятно. ну тогда как я и говорю, просто передайте текущий Itemid как параметр запроса в ваш компонент
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
параметры появились, но их необходимо объединить с параметрами компонента. Объекты, возвращаемые инструкциями:

Код
JComponentHelper::getParams ('com_medialib');

и

Код
JFactory::getApplication()->getMenu()->getItem($menu_item_id)

различны, поэтому через merge () их не склеить. Подскажите, пожалуйста, есть ли в API Joomla какие-нибудь другие стандартные способы объединить настройки воедино с их перекрытием?
« Последнее редактирование: 21.06.2017, 12:18:43 от Inoken »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
например можно так
Код
$params = new JRegistry(JComponentHelper::getParams('com_medialib')->toArray() + JFactory::getApplication()->getMenu()->getItem($menu_item_id)->params->toArray());
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание релиза компонента средствами GitHub

Автор SkyAn

Ответов: 4
Просмотров: 723
Последний ответ 01.11.2019, 17:42:04
от Septdir
Формирование ссылки с параметрами в меню

Автор submaster

Ответов: 2
Просмотров: 778
Последний ответ 28.09.2018, 13:32:43
от submaster
Получить данные из поля " file", и передать в файл обработчик

Автор Glog

Ответов: 5
Просмотров: 1323
Последний ответ 01.08.2017, 13:55:40
от Glog
Зависимость модуля от компонента и страницы

Автор Тренд

Ответов: 34
Просмотров: 2453
Последний ответ 16.06.2017, 19:48:39
от dmitry_stas
Организация доступа пользователей к контенту кастомного компонента

Автор Inoken

Ответов: 4
Просмотров: 998
Последний ответ 15.06.2017, 10:05:40
от Inoken