我有一个问题一直困扰着我好几天了,而且我知道对某些人来说这可能是微不足道的,但请耐心等待我。在我的树枝中,我有一个 href ,它显示一个带有复选框的模态, href 还包含控制器中操作的路径
枝条
<a href="{{ path('delete_image', {'id':image.id}) }}" data-reveal-id="deleteModal" class="icon-edit" style="position:absolute;"></a>
控制器中的操作
/**
*
* @Route("/{id}/delete", name="delete_image")
*/
public function deleteAction(Request $request, CategoryImage $CategoryImage, $id)
{
$em = $this->getDoctrine()->getManager();
$CategoryImage = $em->getRepository('AcmeBundle:entity')->find($CategoryImage->getId());
$em->remove($repo);
$em->flush();
return $this->redirect($this->generateUrl('page_main', array("id"=>$id)));
}
模态
<div id="deleteModal" class="reveal-modal large">
<h6>Delete Image</h6>
<br/>
{{form_start(DeleteImageForm, {'attr': {'id': 'DeleteImageForm'}})}}
Delete Image
{{form_widget(DeleteImageForm.remove)}}
{{form_errors(DeleteImageForm.remove)}}<br/><br/>
admin password <br/>
<input type="password" id="DeletePass"/>
<br/>
<button id = "Delete">Submit</button>
{{form_end(DeleteImageForm)}}
<a class="close-reveal-modal">×</a>
</div>
Jquery的
$('#Delete').on('click', function(e){
var data = $(this).serialize();
if ($('#DeletePass').val() == 'password'){
$( "#DeleteImageForm" ).submit();
}else{
alert('invalid password');
e.preventDefault();
}
});
有没有办法将路径的id /值传递给模态,所以当选中复选框并提交复选框时,它会进入操作?
非常感谢任何帮助。
答案 0 :(得分:0)
通过传递动态参数的占位符,即id
,在树枝中生成删除表单。您可以在生成deleteForm
的控制器中执行此操作。
我们的想法是在action
中有一个唯一的标识符,以便我们可以通过jQuery替换。
return $this->createFormBuilder()
->setAction($this->generateUrl('image_delete', array('id' => 'image_id')))
->setMethod('DELETE')
->getForm()
;
现在,当您的模式打开时,通过jQuery
,将占位符(image_id
)替换为您需要的值,如下所示:
var currentUrl = jQuery("form#DeleteImageForm").attr('action');
// suppose 154 is your new image id.
var newHref = currentUrl.replace('image_id', '154');
// change url of the form action.
jQuery("form#DeleteImageForm").attr('href', newHref);
希望这有帮助。
注意:代码未经过测试!