[英]Symfony2: form is not created
有一种创建链实体的形式。
class ChainType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, array('label' => 'Company name'))
->add('logoImageURL', TextType::class, array('label' => 'Company logo'));
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'CoreBundle\Entity\Chain'
));
}
}
这是一个创建表单并保存实体的newAction
/**
* Creates a new Chain entity.
*
* @Route("/new", name="chain_new")
*/
public function newAction(Request $request)
{
$chain = new Chain();
$form = $this->createForm(ChainType::class, $chain);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($chain);
$em->flush();
return $this->redirectToRoute('chain_show');
}
return $this->render(
'AdminBundle:ChainPanel:new.html.twig',
array('form' => $form->createView())
);
}
这是创建表单的按钮
<button type="button" class="btn btn-primary">
<a href="{{ path('chain_new') }}">
Add Chain
</a>
</button>
问题
当我单击“添加链”按钮时,未创建表格,我只是重定向到“ chain_show”路线。 我的代码有什么问题?
更新-我的解决方案
在控制器中,我将newAction放在showAction之前。 这个固定的问题。 但是我找不到解释
我不确定您要做什么,但是如果您尝试使用ChainType表单创建页面,则还应该为该页面创建模板,如下所示:
.....
{% block YOUR_BLOCK %}
{{ form(form) }}
{% endblock %}
......
并且,还,你不必换a
与标签button
标签,只需要给class="btn btn-primary"
到a
标签。
您的问题是您正在使用包含新Chain对象的变量。 请在下面查看我的示例,这应该可以解决您的问题...
public function newAction(Request $request)
{
$chain = new Chain();
$form = $this->createForm(ChainType::class, $chain);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$chain = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($chain);
$em->flush();
return $this->redirectToRoute('chain_show');
}
return $this->render(
'AdminBundle:ChainPanel:new.html.twig',
array('form' => $form->createView())
);
}
您还错误地创建了提交按钮。 要测试它们是否正常运行,只需使用(在您的.twig.html文件中):
{{ form(form) }}
不过,有趣的是,我认为HTML对于链接是错误的。 您不应该将button
包装到锚标签上。 某些浏览器不支持。 而是使用如下:
<a href="{{ path('chain_new') }}" class="btn btn-primary">
Add Chain
</a>
如果这不能解决您的问题,则单击链接时是否看到正在创建的新实体?
在控制器中,我将newAction放在showAction之前。 这个固定的问题。 但是我找不到解释
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.