无法在symfony3中加载类型

问题描述 投票:2回答:1

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

forms symfony types load
1个回答
0
投票

在Symfony 3.3中添加了autoconfigure选项。

如果你没有使用autoconfigure,请务必使用tag form.type你的服务。

例如:

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

供参考:

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

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

并且(我认为)@Lucas Leonel Azzollini的一个特例,他得到了跟随错误。

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

在他的项目中,DepartamentoType.php文件路径在src\Form。然后他在AppBundle目录中移动了他的文件:src\AppBundle\Form,并修复了错误。

© www.soinside.com 2019 - 2024. All rights reserved.