创建表单时我有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
答案 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
,错误已修复。