簡體   English   中英

Symfony 3-數據庫中的動態表單字段

[英]Symfony 3 - Dynamic form fields from database

我在數據庫中有一個表,其中包含以下字段 :-field_label,field_type,field_case等

我想通過field_case將字段動態添加到表單中。

例如:在此表單類型中,我想使用field_case = 1添加數據庫中的所有字段

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add("companie_uid", HiddenType::class);
    $builder->add("companie_denumire", TextType::class, array('label' => 'companie_denumire'));
    $builder->add("companie_cui", TextType::class, array('label' => 'companie_cui', 'required' => false));
    $builder->add("companie_j", TextType::class, array('label' => 'companie_j', 'required' => false));
    $builder->add("companie_mail", EmailType::class, array('label' => 'companie_mail', 'required' => false));
    $builder->add("companie_website", TextType::class, array('label' => 'companie_website', 'required' => false));
    $builder->add("companie_status", HiddenType::class);
    $builder->add("companie_descriere", TextAreaType::class, array('label' => 'companie_descriere', 'required' => false));
    $builder->add("companie_telefon", TextType::class, array('label' => 'companie_telefon', 'required' => false));
    $builder->add("companie_iban", TextType::class, array('label' => 'companie_iban', 'required' => false));
    $builder->add("companie_banca", TextType::class, array('label' => 'companie_banca', 'required' => false));
    $builder->add("file", FileType::class, array('label' => 'companie_file', 'mapped' => false, 'required' => false));
    $builder->add("save", SubmitType::class, array('label' => 'companie_save'));
    $builder->add(
        $builder->create('address', CompanyAddressType::class, Array('by_reference' => false,))
    );
}

我想從表字段中添加其中field_case = 1

$builder->add(field_id, field_type, array('label' => 'field_label'));

並將它們保存到另一個表field_values中的數據庫中。

您可以使用表單偵聽器

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
    $data = $event->getData();

    switch($data->getFieldCase())
    {
        case 1:
        $builder->add(field_id, field_type, array('label' => 'field_label'));
        break;
        // ...
    }    
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM