gpt4 book ai didi

php - 最佳实践 - 使用 Symfony 2 删除链接

转载 作者:可可西里 更新时间:2023-11-01 12:40:52 26 4
gpt4 key购买 nike

在 Symfony 2 中,创建删除记录的链接的最佳方式是什么?

我可以定义一个到 /entity/delete 的路由,只接受一个 DELETE 方法,但我不知道如何创建一个 DELETE 来自模板的链接。创建 PUT 链接也是如此。

那么,你是做什么的?接受 GET 删除记录的请求?有什么方法可以创建 DELETE 链接吗?

最佳答案

Symfony2 _method 功能描述可以在How to Define Route Requirements中找到.以下是我使用的解决方案。

链接

<a
href="{{ path('my_delete_route_name', {'id': some_entity.id}) }}"
class="as-form"
data-method="delete"
data-csrf="_token:{{ csrf }}"
>{{ 'delete'|trans({}, 'button') }}</a>

复制粘贴后将上述链接重新格式化为内联

附加 onClick 事件监听器:

JS

$('.as-form').on('click',function(){
var $form = $('<form/>').hide();

//form options
$form.attr({
'action' : $(this).attr('href'),
'method':'post'
})

//adding the _method hidden field
$form.append($('<input/>',{
type:'hidden',
name:'_method'
}).val($(this).data('method')));

//adding a CSRF if needs
if ($(this).data('csrf'))
{
var csrf = $(this).data('csrf').split(':');
$form.append($('<input/>',{
type:'hidden',
name:csrf[0]
}).val(csrf[1]));
}

//add form to parent node
$(this).parent().append($form);

$form.submit();

return false;
});

Controller

class MyCustomController extends Controller
{
/**
* @Route("/delete/{id}",name="my_delete_route_name")
* @Method("DELETE")
* @ParamConverter("entity", class="MyEntityClass")
* @CsrfProtector(intention="my_csrf_intention", name="_token")
*/
public function deleteAction(Request $request, $entity)
{
// do whatever you need
}
}

注意

@CsrfProtector 是我的自定义注释,用于在运行 Controller 方法之前验证请求中传递的 CSRF token 。

关于php - 最佳实践 - 使用 Symfony 2 删除链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com