我遇到了一个问题,这个问题已经困扰了我好几天了,我知道对一些人来说可能很琐碎,但请耐心等待。在我的小树枝中,我有一个href,它显示了一个带复选框的模态,href还包含我的控制器中的一个操作路径
Twig
<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/值传递给模态,以便在选中并提交复选框时执行操作?
任何帮助都将不胜感激。
通过传递动态参数(即id
)的占位符,在trick中生成删除表单。您可以在生成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);
希望这能有所帮助。
注意:代码未经过测试!