【问题标题】:Forms - How to pass custom options to CollectionType child in Symfony 4表单 - 如何在 Symfony 4 中将自定义选项传递给 CollectionType 子项
【发布时间】:2019-09-12 11:57:44
【问题描述】:

我想将一些自定义选项从类“AffaireType”传递给我的类“PointageType”,例如当前用户的 id 以在我的类“PointageType”中创建查询。

我试图在 AffaireType 的 buildForm() 函数的“entry_options”中传递我的用户 ID,但它显示了一个错误:

选项“id”不存在。定义的选项有:“action”、“allow_extra_fields”、“allow_file_upload”、“attr”、“attr_translation_parameters”、“auto_initialize”、“block_name”、“block_prefix”、“by_reference”、“compound”、“constraints”、“csrf_field_name "、"csrf_message"、"csrf_protection"、"csrf_token_id"、"csrf_token_manager"、"data"、"data_class"、"disabled"、"empty_data"、"error_bubbling"、"error_mapping"、"extra_fields_message"、"help"、 “help_attr”、“help_html”、“help_translation_parameters”、“inherit_data”、“invalid_message”、“invalid_message_parameters”、“label”、“label_attr”、“label_format”、“label_translation_parameters”、“mapped”、“method”、“post_max_size_message "、"property_path"、"required"、"translation_domain"、"trim"、"upload_max_size_message"、"validation_groups"。

我的 AffaireType 类:

class AffaireType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('numAffaire');
        $builder->add('descAffaire');
        $builder->add('pointages', CollectionType::class, [
            'entry_type' => PointageType::class,
            'entry_options' => array(
                'id' => 8,
            ),
        ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Affaires::class,
        ]);
    }

}

我的 PointageType 类:

class PointageType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('heurePointage');
        //I want to do the query here
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
          'data_class' => Pointage::class,
        ]);
    }
}

我认为这段代码在 Symfony 2/3 中有效,但我如何在 Symfony 4.3 中做到这一点?

【问题讨论】:

    标签: php forms symfony collections formbuilder


    【解决方案1】:

    要向表单类型添加选项,请使用 configureOptions 中的 OptionsResolver:

    $resolver->setRequired(['id']); // for required options, with no default
    // OR
    $resolver->setDefaults(['id' => null]); // for optional options, that can be set
    

    在你的情况下,这必须设置在PointageType::configureOptions

    【讨论】:

    • 非常感谢! :)
    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2014-10-11
    • 2013-03-06
    相关资源
    最近更新 更多