我有以下情况:
我将symfony2-form渲染成一个模态(使用bootstrap和jQuery)。当表单无效时,错误消息应出现在模式框内。我链接到这样的模态框:route / to / action #modal
我该怎么做?
在我的模板中,我有一个简单的模态链接:
<a data-toggle="modal" href="#new">Add member</a>
此链接打开一个模态。在里面,有一个带有title,first_name和last_name的简单表单:
{{ form_widget(form.title) }}
{{ form_widget(form.first_name) }}
{{ form_widget(form.last_name) }}
在表单类中,我将其定义为:
$builder
->add('title', 'text', array('required' => false))
->add('first_name')
->add('last_name');
因此,标题是可选的,并且首字母和姓氏都是必需的。所以我将这些行添加到了validation.yml:
Acme\MemberBundle\Entity\Member:
properties:
first_name:
- NotBlank: { message: Please enter a first name }
last_name:
- NotBlank: { message: Please enter a last name }
在我的行动中(在提交表单时调用)我有以下几行:
/**
* Creates a new Member entity.
*
* @Route("/create", name="acme_member_create")
* @Method("post")
* @Template("AcmeMemberBundle:Member:index.html.twig")
*/
public function createAction()
{
$member = new Member();
$em = $this->getDoctrine()->getEntityManager();
$request = $this->getRequest();
$form = $this->createForm(new MemberType(), $member);
$form->bindRequest($request);
if ($form->isValid()) {
$em->persist($member);
$em->flush();
return $this->redirect($this->generateUrl('acme_member'));
}
$entities = $em->getRepository('AcmeMemberBundle:Member')->findAll();
return array(
'entities' => $entities,
'form' => $form->createView()
);
}
所以,当for无效时,我想回到我的index.html.twig(显示模态的地方)。
答案 0 :(得分:1)
我找到了解决方案!
使用此JavaScript代码,我可以在加载页面时显示模式:
$(window).load(function(){
$('#new').modal()
});
所以,如果表单无效,我只执行此代码。