代码之家  ›  专栏  ›  技术社区  ›  Lucas Leonel Azzollini

无法在symfony3中加载类型

  •  2
  • Lucas Leonel Azzollini  · 技术社区  · 6 年前

    我有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\DepartmentoType” Symfony\Component\Form\Exception\InvalidArgumentException

    1 回复  |  直到 6 年前
        1
  •  0
  •   LugiHaue    6 年前

    这个 autoconfigure 选项已添加到 Symfony 3.3 .

    如果您不使用 自动配置 ,请确保 tag 您的服务 form.type .

    例如:

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

    仅供参考:

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

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

    (我想) 作为卢卡斯·莱昂内尔·阿佐利尼的特例,他犯了以下错误。

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

    在他的项目中,departmentotype。php文件路径位于 src\Form . 然后他把文件搬了进来 AppBundle 目录如下: src\AppBundle\Form ,并修复了错误。