我有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
在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
,并修复了错误。