我是php编码的新手,我正在收回另一位离开的开发者的网站开发。 我正在使用symfony 2。 我的页面是关于特定主题的会议列表。这很好。 我增加了为特殊会议添加专家的可能性。这也很好。 我想要添加的是一个模式,可以在不更改页面的情况下添加主题专家。然后我创建了一个AddExpert页面,如果单独调用它可以正常工作。当我点击按钮时,它正确地注册了数据库中的专家,然后我可以使用它。但是,当单击模态中的按钮时,模态会消失,但不会创建专家。
这是我的代码: 我有按钮用专家列表弹出模态:
<td>
{{ form_widget(meeting.expert, {'attr':{'class': 'form-control'}}) }}
</td>
<td>
<a class="btn btn-info" data-toggle="modal" href="{{ path("appli_addexpert") }}" data-target="#myModal">Open Modal</a>
</td>
标签mymodal如下,但它被我的addExpert页面覆盖:
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>Some text in the modal.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
这是我简单的addExpert.html.twig页面,它可以自行运行:
{% block body %}
<div class="row">
<div class="col-md-12">
<h3>Add a new expert</h3>
<form method="post">
{{ form_widget(form_create) }}
<button id="button-id-modal" type="submit">Add Expert</button>
</form>
</div>
</div>
{% endblock %}
我已经阅读了一些网页,说它可能需要ajax才能工作。不幸的是我还不是专家,所以我需要一些帮助。我试图在包含所有会议的页面中或在addExpert / html.twig页面中的块javascript中添加以下javascript部分,但它也不起作用:
function postForm($form, callback){
var values = {};
console.log($form.serializeArray());
$.each( $form.serializeArray(), function(i, field) {
values[field.name] = field.value;
});
$.ajax({
type: 'post',
url: $form.attr('action'),
data : values,
success: callback || function (data) {
console.log('Saved!')
}
});
}
window.postForm = postForm;
非常感谢你的帮助!
编辑:
在我的控制器中,我有以下内容:
/**
* @Route("/expert/add")
* @Template()
*/
public function addExpertAction(Request $request)
{
$expert = new Expert();
$form_create = $this->createForm(new ExpertType, $expert);
$form_create->handleRequest($request);
if ($form_create->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($expert);
$em->flush();
$this->get("session")->getFlashBag()->add(
"success",
"Expert " . $expert->getName() . " successfully added !"
);
return $this->redirect($this->generateUrl('bdl_appli_manage_expertlist'));
}
return array(
"form_create" => $form_create->createView(),
);
}
我猜测应该更改返回但不确定如何关闭模态
答案 0 :(得分:0)
首先,我不知道你在哪里调用“postForm” 这个函数应该得到一个jquery表单元素和一个回调,这个回调将被调用为ajax调用。 第二件事是“url”ib ajax调用它看起来好像你依赖于应该包含端点url的表单中的“action”属性,但你的表单元素中没有这个属性。