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

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

Как вывести на страницу параметры модуля?

 (Прочитано 203 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Absalem
Осваиваюсь на форуме
***

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

Сообщений: 35


« : 07.09.2016, 13:30:16 »

Добрый день! Помогите, пожалуйста, я только начинаю изучать Joomla и php, и еще много не понимаю.
Как мнеправильно получать параметры из модуля, если они там в таком виде храняться? (вывела через print_r)

Joomla\Registry\Registry Object ( [data:protected] => stdClass Object ( [peoples] => stdClass Object (
[peoples0] => stdClass Object ( [name] => Человек Номер Один [description] => Описание человека номер один. [sort] => 1 [myimage] => images/persons/person-1.jpg )
[peoples2] => stdClass Object ( [name] => Человек номер два [description] => Описание человека номер два [sort] => 2 [myimage] => images/persons/person-2.png )
[peoples3] => stdClass Object ( [name] => Человека номер три [description] => Описание человека номер три [sort] => 3 [myimage] => images/persons/person-3.jpg ) )
[module_tag] => div [bootstrap_size] => 0 [header_tag] => h3 [header_class] => [style] => 0 ) [separator] => . )
Т.е. например мне нужно получить имя и фотку человека номер два, как мнеправильно это сделать?
Заранее спасибо!
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

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


« Ответ #1 : 07.09.2016, 13:42:03 »

Код
$peoples=$params->get('peoples',null);//$params - это JRegistry-объект
$фотка_человека_номер_два=$peoples->peoples2->myimage;
 
Записан
Absalem
Осваиваюсь на форуме
***

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

Сообщений: 35


« Ответ #2 : 07.09.2016, 13:50:26 »

Спасибо большое! Вы мне очень помогли!
Записан
Absalem
Осваиваюсь на форуме
***

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

Сообщений: 35


« Ответ #3 : 07.09.2016, 13:52:42 »

Код
$peoples=$params->get('peoples',null);//$params - это JRegistry-объект
$фотка_человека_номер_два=$peoples->peoples2->myimage;
 
А не подскажете еще, как узнать количество человеков?) типа $peoples->lenght или что-то такое есть?
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

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


Севастополь == Россия


« Ответ #4 : 07.09.2016, 13:56:00 »

не?
Код
echo count($peoples);
Записан
Absalem
Осваиваюсь на форуме
***

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

Сообщений: 35


« Ответ #5 : 07.09.2016, 13:58:04 »

единичку выводит, а должно быть по идее три
Записан
Absalem
Осваиваюсь на форуме
***

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

Сообщений: 35


« Ответ #6 : 07.09.2016, 14:01:50 »

не?
Код
echo count($peoples);
единичку выводит, а должно быть по идее три
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

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


« Ответ #7 : 07.09.2016, 14:39:54 »

Код
echo count((array)$peoples);
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

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


Севастополь == Россия


« Ответ #8 : 07.09.2016, 14:41:39 »

Код
echo count((array)$peoples);
чего? Где такой синтаксис существует?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

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


« Ответ #9 : 07.09.2016, 14:48:57 »

чего? Где такой синтаксис существует?
в PHP. А что не так?
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

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


Севастополь == Россия


« Ответ #10 : 07.09.2016, 14:51:57 »

в PHP. А что не так?
Ну мне кажется что $peoples это и так уже приходит массив, зачем его создавать заново? А тем более у вас с скобками явно не то, если уж создание массива то array(el)
Записан
SmokerMan
Профи
********

Репутация: +694/-25
Offline Offline

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



« Ответ #11 : 07.09.2016, 14:52:34 »

единичку выводит, а должно быть по идее три
правильно, потому что там объект, а не массив
Код:
$count = 0;
foreach ($peoples as $value) {
    if (isset($value->name)) {
        $count++;
    }
}
echo $count;
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

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


Севастополь == Россия


« Ответ #12 : 07.09.2016, 14:53:26 »

правильно, потому что там объект, а не массив
эффектный apic fail Azn
Записан
SmokerMan
Профи
********

Репутация: +694/-25
Offline Offline

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



« Ответ #13 : 07.09.2016, 15:01:09 »

эффектный apic fail Azn
ну типа того)
Код:
$peoples = JArrayHelper::fromObject($peoples);
$count = 0;
foreach ($peoples as $key => $value) {
    if (strpos($key, 'peoples')!== false) {
        $count++;
    }
}
echo $count;

Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #14 : 07.09.2016, 15:20:59 »

Joomla\Registry\Registry Object ( [data:protected] => stdClass Object ( [peoples] => stdClass Object (
[peoples0] => stdClass Object ( [name] => Человек Номер Один [description] => Описание человека номер один. [sort] => 1 [myimage] => images/persons/person-1.jpg )
[peoples2] => stdClass Object ( [name] => Человек номер два [description] => Описание человека номер два [sort] => 2 [myimage] => images/persons/person-2.png )
[peoples3] => stdClass Object ( [name] => Человека номер три [description] => Описание человека номер три [sort] => 3 [myimage] => images/persons/person-3.jpg ) )
[module_tag] => div [bootstrap_size] => 0 [header_tag] => h3 [header_class] => [style] => 0 ) [separator] => . )
Тут же массив объектов. count($peoples) должно три возвращать.
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

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


Разраблю понемногу


« Ответ #15 : 07.09.2016, 15:32:00 »

Тут же массив объектов. count($peoples) должно три возвращать.
Где массив?
[peoples] => stdClass Object

Код
Joomla\Registry\Registry Object ( 
[data:protected] => stdClass Object (
[peoples] => stdClass Object (
[peoples0] => stdClass Object ( [name] => Человек Номер Один [description] => Описание человека номер один. [sort] => 1 [myimage] => images/persons/person-1.jpg )
[peoples2] => stdClass Object ( [name] => Человек номер два [description] => Описание человека номер два [sort] => 2 [myimage] => images/persons/person-2.png )
[peoples3] => stdClass Object ( [name] => Человека номер три [description] => Описание человека номер три [sort] => 3 [myimage] => images/persons/person-3.jpg )
)
[module_tag] => div
[bootstrap_size] => 0
[header_tag] => h3
[header_class] =>
[style] => 0
)
[separator] => .
)

Можно ещё так посчитать
Код
$count = count(get_object_vars($peoples));
Цитировать
get_object_vars возвращает ассоциативный массив нестатических свойств объекта object, доступных в данной области видимости. Если свойству не было присвоено значение, оно будет возвращено со значением NULL.

http://stackoverflow.com/questions/1314745/php-count-an-stdclass-object
« Последнее редактирование: 07.09.2016, 15:36:56 от b2z » Записан
SmokerMan
Профи
********

Репутация: +694/-25
Offline Offline

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



« Ответ #16 : 07.09.2016, 15:57:26 »

Можно ещё так посчитать
Код
$count = count(get_object_vars($peoples));
только он так все свойства посчитает, а не конкретно peoples)
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

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


Разраблю понемногу


« Ответ #17 : 07.09.2016, 16:33:40 »

только он так все свойства посчитает, а не конкретно peoples)
Само собой, просто в этом случае работает, так как в peoples только peoples Azn
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

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


« Ответ #18 : 07.09.2016, 17:06:52 »

А тем более у вас с скобками явно не то, если уж создание массива то array(el)
А я массива с элементом el и не создаю.
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

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


Севастополь == Россия


« Ответ #19 : 07.09.2016, 17:54:04 »

А я массива с элементом el и не создаю.
это был просто пример, что у вас скобки неправильно стоят
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

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


« Ответ #20 : 07.09.2016, 21:47:47 »

у вас скобки неправильно стоят
Ладно, убеждать не буду.
Записан
Страниц: [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