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

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

вывести данные из модуля с формой Subform form field type

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

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

Сообщений: 11


« : 26.05.2017, 11:36:44 »

Подскажите как правильно выводить данные из формы Subform form field type

я вывожу так,
Код:
echo $param->fieldname->fieldname1->example_text ;
echo $param->fieldname->fieldname1->example_textarea;

пробовал в цикле
Код:
<?php foreach ($params as $item) : ?>
  <a href="<?php echo $item->fieldname1->example_textarea; ?>"><?php echo $item->fieldname1->example_text ;?></a>
 
<?php endforeach; ?>

 но когда добавляю еще одну форму  то
Код:
fieldname1
меняется на
Код:
fieldname0
и в следующей формы
Код:
fieldname2
и тд.
как правильно выводить все значения с формы в цикле?
Записан
b2z
Support Team
*****

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

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


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


« Ответ #1 : 26.05.2017, 11:47:15 »

так?

Код
<?php foreach ($params as $i => $item) :
 $property = 'fieldname' . $i;
?>
 <a href="<?php echo $item->{$property}->example_textarea; ?>"><?php echo $item->{$property}->example_text ;?></a>
<?php endforeach; ?>
« Последнее редактирование: 26.05.2017, 11:50:50 от b2z » Записан
Glog
Захожу иногда
**

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

Сообщений: 11


« Ответ #2 : 26.05.2017, 12:18:54 »

так?

Код
<?php foreach ($params as $i => $item) :
 $property = 'fieldname' . $i;
?>
 <a href="<?php echo $item->{$property}->example_textarea; ?>"><?php echo $item->{$property}->example_text ;?></a>
<?php endforeach; ?>

не выводит ничего..

я еще пробовал такой вариант, выдает только  00000
Код:
<?php for($i=1; $i <=10; $i++)
 echo $param->fieldname->fieldname+$i->example_textarea;?>

а так сервер возвращает ошибку HTTP ERROR 500
Код:
<?php for($i=1; $i <=10; $i++)
 echo $param->fieldname->'fieldname'.$i->example_textarea; ?>


Записан
Glog
Захожу иногда
**

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

Сообщений: 11


« Ответ #3 : 26.05.2017, 13:34:53 »

получилось таким способом
Код:
  <?php for($i=0; $i <=10; $i++){
$key = 'fieldname'.$i;
echo '<a href="'.$param->fieldname->$key->example_textarea.'">'.$param->fieldname->$key->example_text.'</a><br/>';

}   ?>
Записан
b2z
Support Team
*****

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

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


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


« Ответ #4 : 26.05.2017, 15:52:08 »

Ну как я им предлагал, только без {}. Странно, что не сработало с {}. Можно ещё так попробовать
Код
$param->fieldname->{'fieldname' . $i}

https://stackoverflow.com/questions/1147937/php-curly-brace-syntax-for-member-variable/1147942#1147942
Записан
effrit
Группа развития
*****

Репутация: +818/-7
Online Online

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


effrit.com


« Ответ #5 : 29.05.2017, 21:33:59 »

называется, встретились два мастера запутывания кода Azn
нагляднее всего вот так будет, имхо:

Код:
foreach ($params[fieldname] as $i) : // разбираем объект с клонированными элементами
$param1=$i->example_text;
$param2=$i->example_textarea;
endforeach;
Записан
Glog
Захожу иногда
**

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

Сообщений: 11


« Ответ #6 : 01.06.2017, 00:07:46 »

Ну как я им предлагал, только без {}. Странно, что не сработало с {}. Можно ещё так попробовать
Код
$param->fieldname->{'fieldname' . $i}

https://stackoverflow.com/questions/1147937/php-curly-brace-syntax-for-member-variable/1147942#1147942

Спасибо за помощь!)
Записан
Glog
Захожу иногда
**

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

Сообщений: 11


« Ответ #7 : 01.06.2017, 00:14:00 »

называется, встретились два мастера запутывания кода Azn
нагляднее всего вот так будет, имхо:

Код:
foreach ($params[fieldname] as $i) : // разбираем объект с клонированными элементами
$param1=$i->example_text;
$param2=$i->example_textarea;
endforeach;

Спасибо так действительно удобнее)

только в такой конструкции не получается добавить ограничение количества вывода ссылок, например не более 10,
можете подсказать как реализовать?
Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #8 : 01.06.2017, 00:18:30 »

Объект в цикл да вы суровы =) с ограничением
Код
$array = (array)$params->fieldname;
$i = 1;
foreach ($array as $key => $object) {
if ($i == 10) {
break;
}
$i++;
}
 
« Последнее редактирование: 01.06.2017, 00:32:55 от Septdir » Записан
effrit
Группа развития
*****

Репутация: +818/-7
Online Online

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


effrit.com


« Ответ #9 : 01.06.2017, 00:22:09 »

инициализируете счетчик до объявления цикла
внутри цикла его увеличиваете и проверяете на достижение нужного значения и делаете выход через break;
Код:
$count=0;
foreach ($params[fieldname] as $i) : // разбираем объект с клонированными элементами
$param1=$i->example_text;
$param2=$i->example_textarea;
        $count++;
        if ($count==10) break;
endforeach;
Записан
AlekVolsk
Профи
********

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

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



« Ответ #10 : 01.06.2017, 00:22:35 »

Код
$x = 10; // максимальное кол-во выводимых ссылок, вместо жесткого значения можно подставлять значение параметра из вашего расширения
foreach ($params[fieldname] as $i) : // разбираем объект с клонированными элементами
if (!$x) break;
$param1=$i->example_text;
$param2=$i->example_textarea;
$x--;
endforeach;

ну и ессно, как предложил Septdir, объект в массив запихнуть, но если ограничится десятком итераций, то можно и с объектом, а то возможно он еще настолько тяжел окажется, что больше времени на его перевод в массив уйдет, нежели на его перебор целиком
Записан
effrit
Группа развития
*****

Репутация: +818/-7
Online Online

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


effrit.com


« Ответ #11 : 01.06.2017, 00:26:38 »

Septdir, я так понимаю, что это синоним ВСЕГДА? Azn
Код:
if ($i = 10) {
Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #12 : 01.06.2017, 00:29:27 »

Septdir, я так понимаю, что это синоним ВСЕГДА? Azn
Код:
if ($i = 10) {
Упс, и ведь не первый раз.
Кстати говоря насколько я помню subform после сохранения в json массив загоняет. И массив там изначально.  Хотя я уже давно его не юзал.
« Последнее редактирование: 01.06.2017, 00:35:32 от Septdir » Записан
Glog
Захожу иногда
**

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

Сообщений: 11


« Ответ #13 : 01.06.2017, 00:34:44 »

Код
$x = 10; // максимальное кол-во выводимых ссылок, вместо жесткого значения можно подставлять значение параметра из вашего расширения
foreach ($params[fieldname] as $i) : // разбираем объект с клонированными элементами
if (!$x) break;
$param1=$i->example_text;
$param2=$i->example_textarea;
$x--;
endforeach;

ну и ессно, как предложил Septdir, объект в массив запихнуть, но если ограничится десятком итераций, то можно и с объектом, а то возможно он еще настолько тяжел окажется, что больше времени на его перевод в массив уйдет, нежели на его перебор целиком

Спасибо!
Записан
b2z
Support Team
*****

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

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


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


« Ответ #14 : 01.06.2017, 10:56:07 »

А чего все выдумывают? Есть же лаконичное решение Azn

Код
<?php foreach ($params as $i => $param) : ?>
 <a href="<?php echo $param->{'fieldname' . $i}->example_textarea; ?>"><?php echo $param->{'fieldname' . $i}->example_text ;?></a>
<?php endforeach; ?>
Записан
AlekVolsk
Профи
********

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

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



« Ответ #15 : 01.06.2017, 11:54:47 »

а если внутри $params 20000 записей - все 20000 перебираться будут?
Записан
b2z
Support Team
*****

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

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


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


« Ответ #16 : 01.06.2017, 12:36:05 »

Ну если у тебя предполагается такое большое количество полей, то такое не в Subform делается.
Записан
Glog
Захожу иногда
**

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

Сообщений: 11


« Ответ #17 : 06.06.2017, 10:45:48 »

Ну если у тебя предполагается такое большое количество полей, то такое не в Subform делается.

Да действительно, Subform немного не подходит,
что вы посоветуете использовать вместо Subform?

Записан
Septdir
Практически профи
*******

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

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


Skype: septdir


« Ответ #18 : 06.06.2017, 12:02:36 »

Да действительно, Subform немного не подходит,
что вы посоветуете использовать вместо Subform?


Это смотря какая задача. Вполне вероятно что вам вообще лучше простенький компонент сделать, хоть и на фронт будет через модуль выводиться.
Записан
Glog
Захожу иногда
**

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

Сообщений: 11


« Ответ #19 : 22.06.2017, 14:32:07 »

Сейчас задача такая, ввод информации в поля из excel документа (загрузкой документа или копи паст ) есть какие то идеи как это реализовать?. Subform 100% не подходит, изначально не знал что будет такая задача.
Записан
Страниц: [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