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

Glog

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Подскажите как правильно выводить данные из формы 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

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
так?

Код: php
<?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; ?>
*

Glog

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
так?

Код: php
<?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

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
получилось таким способом
Код
  <?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

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Ну как я им предлагал, только без {}. Странно, что не сработало с {}. Можно ещё так попробовать
Код: php
$param->fieldname->{'fieldname' . $i}

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

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
называется, встретились два мастера запутывания кода :)
нагляднее всего вот так будет, имхо:

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

Glog

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

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

Спасибо за помощь!)
*

Glog

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
называется, встретились два мастера запутывания кода :)
нагляднее всего вот так будет, имхо:

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

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

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

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Объект в цикл да вы суровы =) с ограничением
Код: php
$array = (array)$params->fieldname;
$i = 1;
foreach ($array as $key => $object) {
if ($i == 10) {
break;
}
$i++;
}
« Последнее редактирование: 31.05.2017, 23:32:55 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

effrit

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

AlekVolsk

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

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

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Septdir, я так понимаю, что это синоним ВСЕГДА? :)
Код
if ($i = 10) {
Упс, и ведь не первый раз.
Кстати говоря насколько я помню subform после сохранения в json массив загоняет. И массив там изначально.  Хотя я уже давно его не юзал.
« Последнее редактирование: 31.05.2017, 23:35:32 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Glog

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

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

Спасибо!
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
А чего все выдумывают? Есть же лаконичное решение :)

Код: php
<?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

  • Гуру
  • 6915
  • 415 / 4
а если внутри $params 20000 записей - все 20000 перебираться будут?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Ну если у тебя предполагается такое большое количество полей, то такое не в Subform делается.
*

Glog

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Ну если у тебя предполагается такое большое количество полей, то такое не в Subform делается.

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

*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Да действительно, Subform немного не подходит,
что вы посоветуете использовать вместо Subform?


Это смотря какая задача. Вполне вероятно что вам вообще лучше простенький компонент сделать, хоть и на фронт будет через модуль выводиться.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Glog

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Сейчас задача такая, ввод информации в поля из excel документа (загрузкой документа или копи паст ) есть какие то идеи как это реализовать?. Subform 100% не подходит, изначально не знал что будет такая задача.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести дату завершения публикации модуля publish_down

Автор theflame

Ответов: 7
Просмотров: 4405
Последний ответ 06.10.2017, 12:46:30
от NewUsers
Получить данные из поля " file", и передать в файл обработчик

Автор Glog

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

Автор Тренд

Ответов: 34
Просмотров: 2452
Последний ответ 16.06.2017, 19:48:39
от dmitry_stas
Вывести вместо id название

Автор web3.0

Ответов: 7
Просмотров: 956
Последний ответ 25.04.2017, 14:28:52
от web3.0
Ошибка при создании модуля

Автор White_Tiger

Ответов: 7
Просмотров: 1782
Последний ответ 01.02.2016, 14:33:46
от robert