Forms 无法在symfony3中加载类型

Forms 无法在symfony3中加载类型,forms,symfony,types,load,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;

我有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(),
        ]);
    }
控制器。

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\DepartmentOtype” Symfony\Component\Form\Exception\InvalidArgumentException


自动配置
选项是在Symfony 3.3中添加的

如果您没有使用
自动配置
,请确保
使用
表单标记
您的服务。键入

例如:

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

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

无法加载类型“AppBundle\Form\DepartmentOtype”Symfony\Component\Form\Exception\InvalidArgumentException

(我认为)对于@Lucas Leonel Azzolini来说是个特例,他犯了以下错误

试图从命名空间“AppBundle\Form”加载类“departmentOtype”。是否忘记了另一个命名空间的“use”语句


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

在服务中自动配置的价值是什么。(yml、php、xml)?@LugiHaue我在与表单和控制器的“服务”关系中没有配置。@LucasLeonelAzzollini app/config/services.ymlThanks,现在我有另一个错误…”试图从命名空间“AppBundle\form”加载类“departmentotype”。您忘记了另一个名称空间的“use”语句了吗?@LucasLeonelAzzollini departmentotype.php的完整路径是什么?src\Form\departmentotype.phpWhy src\Form not src\AppBundle\Form?为类型创建服务有什么意义?