为映射表单使用扩展SubmitType

时间:2016-08-25 10:05:20

标签: symfony symfony-forms

尝试扩展SubmitType

class ValidateType extends AbstractType
{
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'label' => 'Valider',
            'mapped' => false,
            'attr' => array(
                'class' => 'btn-lg btn-success btn-block',
            ),
        ));
    }

    public function getParent()
    {
        return SubmitType::class;
    }
}

用于映射表格

class SecurityFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // ...
            ->add('validate', ValidateType::class, array('mapped' => false))
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => Item::class
        ));
    }
}

告诉我

  

属性“验证”和方法之一“getValidate()”,“validate()”,“isValidate()”,“hasValidate()”,“__ get()”都不存在并且在课堂上具有公共访问权限“的appbundle \实体\物品”。

我做错了吗? 有没有办法扩展SubmitType

2 个答案:

答案 0 :(得分:1)

在这种情况下,您无需使用mapped属性。相反,请使用界面SubmitButtonTypeInterface

<强> ValidateType:

use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class ValidateType extends AbstractType  implements SubmitButtonTypeInterface
{
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'label'  => 'Valider',
            'attr'   => [
                'class' => 'btn-lg btn-success btn-block',
            ],
        ]);
    }

    public function getParent()
    {
        return SubmitType::class;
    }
}

<强> SecurityFormType:

$builder
    // ...
    ->add('validate', ValidateType::class)

答案 1 :(得分:0)

让您的表单类型类实现SubmitButtonTypeInterface,以便使用SubmitButtonBuilder代替常规FormBuilder