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

时间:2016-08-03 10:00:21

标签: javascript php jquery symfony

我有一个问题一直困扰着我好几天了,而且我知道对某些人来说这可能是微不足道的,但请耐心等待我。在我的树枝中,我有一个 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">&#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 /值传递给模态,所以当选中复选框并提交复选框时,它会进入操作?

非常感谢任何帮助。

1 个答案:

答案 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);

希望这有帮助。

注意:代码未经过测试!