2015-03-27 3 views
2

У меня проблема с простой формой. У меня есть класс под названием JurisdictionUser(), а мой класс - JurisdictionUserNewType(). Если я ставлю следующий код, его работа отлично:Простая форма в symfony2

$jurisdiction_user = new JurisdictionUser(); 
$form = $this->createFormBuilder($jurisdiction_user) 
     ->add('name', 'text') 
     ->add('email', 'text', array('required' => false)) 
     ->add('save', 'submit') 
     ->getForm(); 

, но, если я ставлю следующий код:

$jurisdiction_user = new JurisdictionUser(); 
$form = $this->createFormBuilder(new JurisdictionUserNewType(), $jurisdiction_user); 

Это даст мне следующую ошибку:

ContextErrorException: Catchable Fatal Error: Argument 2 passed to Symfony\Bundle\FrameworkBundle\Controller\Controller::createFormBuilder() must be of the type array, object given, called in /home/sierra/dev_env/iyc-open010/src/Radmas/BackofficeAdminBundle/Controller/UserAdminController.php on line 119 and defined in /home/sierra/dev_env/iyc-open010/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php line 175 

I нужна помощь xD. Мой класс JurisdictionUserNewType().

<?php 
/** 
* Created by PhpStorm. 
* User: diego 
* Date: 15/01/14 
* Time: 16:21 
*/ 

namespace Radmas\BackofficeAdminBundle\Form\Type; 
use Radmas\BackofficeAdminBundle\Form\Transformer\CapitalToSmallLetterTransformer; 
use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class JurisdictionUserNewType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $transformer = new CapitalToSmallLetterTransformer(); 

     $builder 
      ->add('name', 'text'); 

     $builder->add(
      $builder->create('email', 'text', array('required' => false)) 
       ->addModelTransformer($transformer) 
     ); 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'Radmas\Open010Bundle\Document\JurisdictionUser' 
     )); 
    } 

    public function getName() 
    { 
     return 'jurisdictionUserNew'; 
    } 
} 

ответ

3

Вы должны использовать

$this->createForm(new JurisdictionUserNewType(), $jurisdiction_user) 

в контроллере, а не createFormBuilder.

Смежные вопросы