symfony 2.3将路径id传递到模式中的复选框形式


symfony 2.3 passing path id to checkbox form in modal

我遇到了一个问题,这个问题已经困扰了我好几天了,我知道对一些人来说可能很琐碎,但请耐心等待。在我的小树枝中,我有一个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">&#215;</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);

希望这能有所帮助。

注意:代码未经过测试!