【问题标题】:Symfony 3.3 : 2 form of same typeSymfony 3.3:2种相同类型的形式
【发布时间】:2018-04-12 08:31:37
【问题描述】:

我的网站上有一个大表格。因为它很大,我想把它分成两部分。我已经完成了第一个并且它正在工作。现在我想在同一页上做第二个。他们两个都有相同的实体(所以基本上,我想在同一页面上做同一个实体的两种形式)但我现在不知道如何在 buildForm 中做到这一点。我是否需要在 $builder 旁边创建另一个变量($builder = 我的第一个表单)。

感谢您的回答!

【问题讨论】:

  • 您能否展示一些代码以便更容易理解您想要的内容?您仍然在同一页面上显示两个表单吗?两个表单都有提交按钮吗?如果没有,您是在页面之间保存实体还是将数据存储在会话/缓存中?

标签: php forms symfony frameworks


【解决方案1】:

这里有一些代码:

class myType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
                ->add('numero')
                ->add('other')
                ->add('things')
    }

我希望有 1 个提交按钮表单 2 表单,但第二个在第一次不显示。只有在提交第一个表单时才会显示。

【讨论】:

  • (请使用此说明更新您的问题,而不是将其作为答案发布)
【解决方案2】:

我会做什么,我不知道这是否是最好的方法,但我会创建两种表单类型。 1) 基于您的实体的表单类型和 2) 将它们组合在一起的 fromtype。

联系人的简单示例

class ContactType extends AbstractType {

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->add('billing', AddressType::class);
    $builder->add('shipping', AddressType::class);       
}

public function getBlockPrefix() {
    return 'contact';
}
}

AddressType 看起来像:

class AddressType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
            ->add('street', TextType::class, array())
            ->add('country', TextType::class, array())
            ;
}

public function getBlockPrefix() {
    return 'address';
}

public function configureOptions(OptionsResolver $resolver) 
{
    $resolver->setDefaults(array(
        'data_class' => '<yourbundle>\Entity\Address',
    ));
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多