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

Damarkuzz

  • Захожу иногда
  • 101
  • 1 / 0
Здравствуйте, балуюсь с созданием модуля квиз-опроса, возник вопрос, как вывести массив с repeatable subform внутри которого есть еще repeatable поля?
Получилось методом проб и ошибок кодом ниже вывести первый "Слайд", но сейчас застрял на вопросе вывода всех "Слайдов".

Есть следующий код:
Код
echo '<div class="quize-item">';

$field_name = $app->input->get('field_name' , [] , 'ARRAY');
$namer_ff = $app->input->get('namer_ff' , [] , 'ARRAY');

$ObjectField_name = $params->get('field_name');

$quest = $ObjectField_name->field_name0->quest;
$test_text = $ObjectField_name->field_name0->namer_ff;
$fieldValues = $ObjectField_name->field_name0->namer_ff;

// вопрос теста
$question_res = $ObjectField_name ->field_name0->quest;
echo $question_res;
// вопрос теста


// ответ теста
foreach ($fieldValues as $fieldValue) {

$list = trim($fieldValue->test_list);
$text = trim($fieldValue->test_text);
if ($list == 0) {
echo '<label><input type="checkbox">'.$text.'</label>';
}
if ($list == 1) {
echo '<label><input type="radio">'.$text.'</label>';
}
if ($list == 2) {
echo '<label><input type="text">'.$text.'</label>';
}
}
// ответ теста

echo '</div>';

Прошу обратить внимание, что проблема сотоит в том, что массив $ObjectField_name - ассоциативный, т.е имеет индексы в виде слов "field_name0", "field_name1". Ума не приложу, как совместить их вывод с выводом вложенных циклов.
Результат print_r($ObjectField_name) :
Код
	stdClass Object
(
    [field_name0] => stdClass Object
        (
            [quest] => Есть ли у Вас уже готовый сайт?
            [namer_ff] => stdClass Object
                (
                    [namer_ff0] => stdClass Object
                        (
                            [test_text] => Да, есть
                            [test_list] => 1
                        )

                    [namer_ff1] => stdClass Object
                        (
                            [test_text] => Нет, нету
                            [test_list] => 0
                        )

                )

        )

    [field_name1] => stdClass Object
        (
            [quest] => Какие базовые разделы необходимы на сайте?
            [namer_ff] => stdClass Object
                (
                    [namer_ff0] => stdClass Object
                        (
                            [test_text] => Контакты
                            [test_list] => 0
                        )

                )

        )

)



Благодарю за любую помощь!
С меня тонны плюсиков кармы и море благодарности!
« Последнее редактирование: 23.08.2020, 23:16:49 от Damarkuzz »
*

gartes

  • Завсегдатай
  • 1700
  • 131 / 5
  • Е = mс²
Re: Как правильно вывести циклы?
« Ответ #1 : 23.08.2020, 22:39:31 »
Ну вы хоть скажите - Что Вы хотите !
Если вам просто нужно в плаге или в шаблоне просто форму вывести - то это правильно сделать через объект JForm
*

gartes

  • Завсегдатай
  • 1700
  • 131 / 5
  • Е = mс²
Re: Как правильно вывести циклы?
« Ответ #2 : 23.08.2020, 22:51:34 »
PHP Code :
Код
# может быть произвольным значением
    $name = 'myform'  ;
        # Путь к форме от корня сервера
        $path_to_form = JPATH_THEMES.'/my_template/forms/form.xml' ;
        $form=JForm::getInstance($name , $path_to_form);

        # Если нужно в форму добавить данные
        $data =  new stdClass();
        $form->bind($data);
        # Рендер Fieldset
        $viewData['formField'] =  $form->renderFieldset('myFieldSet');
File : form.xml
Код: xml
<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="myGroupOfFields">
        <fieldset name="myFieldSet">
            <!-- Здесь определяются поля -->
            <field name="quest"
type="radio"
default="0"
label="PRO_QUEST"
description="PRO_QUEST_DESC"
class="btn-group btn-group-yesno"
showon=""
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="quest_two"
type="radio"
default="0"
label="PRO_QUEST_TWO"
description="PRO_QUEST_TWO_DESC"
class="btn-group btn-group-yesno"
showon=""
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>           
        </fieldset>
        <fieldset name="myOtherFieldSet">
            <!-- тут также могут быть отдельные поля -->


        </fieldset>
    </fields>
</form>


*

Damarkuzz

  • Захожу иногда
  • 101
  • 1 / 0
Re: Как правильно вывести циклы?
« Ответ #3 : 23.08.2020, 23:22:49 »
Ну вы хоть скажите - Что Вы хотите !
Если вам просто нужно в плаге или в шаблоне просто форму вывести - то это правильно сделать через объект JForm
Требуется вывести все существующие поля в соответствии с их вложенностью и порядком
*

Damarkuzz

  • Захожу иногда
  • 101
  • 1 / 0
Re: Как правильно вывести циклы?
« Ответ #4 : 23.08.2020, 23:27:28 »
PHP Code :
Возможно, визуально будет более понятно. Сейчас отображается только первый вопрос, нужно сделать, чтобы отображались все имеющийся.
*

gartes

  • Завсегдатай
  • 1700
  • 131 / 5
  • Е = mс²
Re: Как правильно вывести циклы?
« Ответ #5 : 23.08.2020, 23:38:30 »
Код
foreach ($datasStd as $data ) {
                echo 'Label : : ' . $data->quest ;
                foreach ( $data->namer_ff as $variant ){
                    echo 'Text : ' . $variant->test_text ;
                    echo 'id_or_value : ' . $variant->test_list ;
                }
            }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как по конкретному id вывести название статьи?

Автор Аня

Ответов: 4
Просмотров: 126
Последний ответ Сегодня в 14:32:42
от v42bis
Вывести определенный ТЕГ

Автор lgmax

Ответов: 2
Просмотров: 139
Последний ответ 30.04.2021, 12:53:05
от lgmax
Как вывести потоковое видео на сайт через api?

Автор V1RTUS

Ответов: 0
Просмотров: 86
Последний ответ 22.04.2021, 02:05:39
от V1RTUS
Как вывести заголовок страницы браузера в произвольном месте через php?

Автор kiev

Ответов: 4
Просмотров: 117
Последний ответ 12.02.2021, 16:50:57
от kiev
Как в хлебных крошках вывести заголовок страницы?

Автор zahar_92

Ответов: 4
Просмотров: 143
Последний ответ 10.02.2021, 09:20:25
от zahar_92