2016-03-13 2 views
3

У меня есть объект «Новости» с полями:Symfony типа 3 формы ошибка

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $name; 


/** 
* @ORM\Column(type="text") 
*/ 
protected $description; 

Я генерировать форму в моем контроллере:

public function createNewsAction(Request $request) 
{ 
    $news = new News(); 
    $news->setName('New!'); 
    $news->setDescription('test'); 
    $form = $this->createFormBuilder($news) 
     ->add('name', TextType::class) 
     ->add('description', TextType::class) 
     ->add('save', SubmitType::class, array('label' => 'Create Task')) 
     ->getForm(); 
    return $this->render('frontend/createNews.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

И когда я пытаюсь вызвать этот метод (» createNewsAction ") Я получил ошибку:

Could not load type "Doctrine\DBAL\Types\TextType" 

500 Internal Server Error - InvalidArgumentException 

Stack Trace 

in vendor\symfony\symfony\src\Symfony\Component\Form\FormRegistry.php at line 87 - 
       if (class_exists($name) && in_array('Symfony\Component\Form\FormTypeInterface', class_implements($name))) { 
        $type = new $name(); 
       } else { 
        throw new InvalidArgumentException(sprintf('Could not load type "%s"', $name)); 
       } 
      } 

Что я делаю не так с этим кодом?

+0

TextType и SubmitType нужно использовать заявление. Проверьте примеры. – Cerad

+1

Я нахожу ошибку. В инструкции контроллера вместо «Использовать Doctrine \ DBAL \ Types \ TextType;» должен быть «использовать Symfony \ Component \ Form \ Extension \ Core \ Type \ TextType;" – raskopin

ответ

14

Проверьте use заявление в верхней части контроллера ...
Вы, вероятно, использовали:

use Doctrine\DBAL\Types\TextType 

Оно должно быть:

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