Заполнение $form_input параметрами элемента ‘select’?

#perl #html-formfu

#perl #html-formfu

Вопрос:

Я пытаюсь понять структуру данных, необходимую для заполнения формы значениями элемента ‘select’ (параметры).

Когда я дамп (Data::Dumper) объекта FormFu, я вижу, что структура объекта выглядит следующим образом:

 'name' => 'EmailDL',
'_options' => [
         {
           'label_attributes' => {},
           'value' => 'm',
           'container_attributes' => {},
           'label' => 'Male',
           'attributes' => {}
         },
         {
           'label_attributes' => {},
           'value' => 'f',
           'container_attributes' => {},
           'label' => 'Female',
           'attributes' => {}
         }
       ],
  

Увидев это, я решил, что способ структурирования $form_input (будучи таким $form_input = %cgivars ) будет примерно следующим:

      'Firstname' => 'Faisal',
     'EmailDL' => [
                    {
                      'value' => 'myvalue',
                      'label' => 'mylabel'
                    }
                  ],
  

Однако, похоже, это не работает. Я обнаружил, что $form_input правильное структурирование, а затем выдача $fu->default_values($form_input) должны быть простыми и эффективными, за исключением этого случая, когда я пытаюсь включить подструктуру select / options.

Итак, вопрос в том, как я должен структурировать ‘EmailDL’ выше, чтобы правильно заполнять параметры ‘select’ при выполнении $fu->default_values($form_input) или $fu->process($form_input) ?

Ответ №1:

Чтобы задать параметры, вы используете вызов options,

 $fu->get_all_element('EmailDL')->options([ [ 'myvalue', 'mylabel' ], 
                                             [ 'val2', 'label2' ] ]);
  

Если затем вы хотите установить одно из этих значений, вы можете использовать default_values.

 $fu->default_values({ EmailDL => 'val2' });
  

Дополнительная справка доступна здесь, в документации Element::Group. Обратите внимание, что примеры кода приведены в тексте справки.