无法在symfony3中加载类型

时间:2017-12-27 12:41:42

标签: forms symfony types load

创建表单时我有symfony 3.3和这个问题。

当我在控制器中实例化表单时显示错误。

以下是所涉及的课程:

表单。

namespace AppBundle\Form;

use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use AppBundle\Entity\Departamento;
use Symfony\Component\Form\AbstractType;


class DepartamentoType extends AbstractType {

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('nombreDepartamento',TextType::class)
            ->add('planta', IntegerType::class)
            ->add('edificio',TextType::class)
            ->add('ciudadDepartamento',TextType::class)    
        ;
    }
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => Departamento::class
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'appbundle_departamento';
    }


}

控制器。

namespace AppBundle\Controller;

use AppBundle\Entity\Departamento;
use AppBundle\Form\DepartamentoType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class DepartamentoController extends Controller{

    /**
     * @Route("/departamento_new", name="departamento_new")
     */
    public function newAction(Request $request)
    {
        $departamento = new Departamento();
        $formulario = $this->createForm(
            DepartamentoType::class, 
            $departamento,
            array('action' => $this->generateUrl('departamento_create'),
                  'method' => 'POST')
        );
        return $this->render('departamento/new_edit.html.twig', [
            'formulario' => $formulario->createView(),
        ]);
    }

这就是我如何尝试创建表单。

这是错误:

  

无法加载“AppBundle \ Form \ DepartamentoType”类型   的Symfony \组件\表格\异常\ InvalidArgumentException

1 个答案:

答案 0 :(得分:0)

Symfony 3.3 中添加了autoconfigure选项。

如果您未使用autoconfigure,请务必使用tag form.type您的服务。

例如:

app.departamento:
    class: AppBundle\Form\DepartamentoType
    tags:
        - { name: form.type }

供参考:

使用表单类型服务定义,修复以下错误。

  

无法加载类型" AppBundle \ Form \ DepartamentoType"的Symfony \组件\表格\异常\ InvalidArgumentException"

(我认为) @Lucas Leonel Azzollini的一个特例,他遇到了以下错误。

  

尝试加载课程" DepartamentoType"来自命名空间" AppBundle \ Form"。你忘记了"使用"另一个命名空间的语句?

在他的项目中,DepartamentoType.php文件路径位于src\Form。然后他将文件移动到AppBundle目录中,如下所示:src\AppBundle\Form,错误已修复。