2016-08-25 3 views
0

Der Versuch, die SubmitType zu verlängern:Erweiterung SubmitType für ein zugeordnetes Formular Verwendung

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; 
    } 
} 

zu verwenden, um in einem zugeordneten Form

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 
     )); 
    } 
} 

sagt mir

Weder die Eigenschaft "validieren" noch eine der Methoden "getValidate()", "validate()", "isValidate()", "hasValidate()", "__get()" existieren und haben öffentlichen Zugriff in der Klasse "AppBundle \" Entität \ Item ".

Mache ich etwas falsch?
Gibt es eine Möglichkeit, SubmitType zu erweitern?

+0

Haben Sie definieren Ihre benutzerdefinierten Feldtyp als Dienstleistung? – DOZ

+0

Nein, warum sollte ich? Ich versuche nicht, eine [Erweiterung] zu tun (https://symfony.com/doc/current/form/create_form_type_extension.html), einfach ein benutzerdefiniertes Formular –

+0

In der Tat haben Sie Recht – DOZ

Antwort

1

Sie müssen mapped Eigenschaft für diesen Fall nicht verwenden. Verwenden Sie stattdessen Schnittstelle 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) 
Verwandte Themen