如何在Symfony 3中使用自定义FormType

时间:2016-02-28 02:10:57

标签: symfony-forms symfony

我在训练,但我在symfony 3

我有问题我收到此错误

  

“string”类型的预期参数,   给出“Test \ FrontBundle \ Form \ Type \ SheetType”

SheetType.php上的代码是

<?php

namespace Test\FrontBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\FormBuilderInterface;


class SheetType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name',null,array('label'=>'Titre de l\'album'))
            ->add('type')
            ->add('artist')
            ->add('duration')
            ->add('released', DateType::class)
            ;
    }
}

在我的SheetController.php上,我做了我的控制器 我不知道我怎么能解决这个问题,所以我试着别的我有错误

 public function createAction(Request $request)
    {
        $form = $this->createForm(new SheetType());

        $form->handleRequest($request);

        if($request->isMethod('post') && $form->isValid()){
            $em = $this->getDoctrine()->getManager();
            $em->persist($form->getData());
            $em->flush();
           return $this->redirect($this->generateUrl('test_front_sheet_list'));
        } 
        return $this->render('TestFrontBundle:Sheet:create.html.twig', array('form' => $form->createView()));
    }

1 个答案:

答案 0 :(得分:6)

由于symfony 2.8在创建表单或表单构建器时必须将完全限定类名实例作为参数传递,因此不再需要FormTypeInterface的实例。

请参阅https://github.com/symfony/symfony/blob/2.8/UPGRADE-2.8.md

所以你应该改用$form = $this->createForm(SheetType::class);