Php 我们可以在Laravel的链接中更改请求吗

Php 我们可以在Laravel的链接中更改请求吗,php,laravel,Php,Laravel,在Laravel4.2中,是否有任何方法可以创建url链接,从而发送删除或放置请求 例如,我有一个删除按钮,我知道我可以把它放在一个表单中,让表单向resource.destroy发送一个删除请求来删除一些东西和所有东西。我想要的是避免将按钮包装在表单中,只需创建一个指向resource.destroy的url(我使用的是restful资源)并执行该函数中的操作。我知道我可以使用action(),但这会发送GET请求。我是否可以让它发送删除/放置任何其他请求,而不将其包装在表单中?可能吗?不,不

在Laravel4.2中,是否有任何方法可以创建url链接,从而发送删除或放置请求


例如,我有一个删除按钮,我知道我可以把它放在一个表单中,让表单向resource.destroy发送一个删除请求来删除一些东西和所有东西。我想要的是避免将按钮包装在表单中,只需创建一个指向resource.destroy的url(我使用的是restful资源)并执行该函数中的操作。我知道我可以使用action(),但这会发送GET请求。我是否可以让它发送删除/放置任何其他请求,而不将其包装在表单中?可能吗?

不,不可能使用“普通”HTML链接发送GET请求以外的任何内容。
您要么将按钮包装成表单,要么使用javascript。下面是jQuery的一个简单示例:

具有生成的url的链接 (实际上,只要
href
属性包含正确的url,如何生成链接并不重要)

jQuery事件侦听器 然后,您可以收听
单击
事件,读取
href
属性并将其用于ajax请求

$('#button').on('click', function(e){
    e.preventDefault(); // avoid redirect from clicking on the link
    $.ajax({
        url: $(this).prop('href'),
        type: 'PUT'
    });
});

请注意,这样用户就可以保持在同一页面上。根据具体需要,您可能希望在ajax调用后执行重定向

除了@lukasgeiter的回答之外,另一个选项是使用在web上几个地方浮动的小Restfulizer.js“library”。Ryan Durham在他的Sentinel软件包中对其进行了一些更新,因此这就是我首先要介绍的软件包:

使用此库,只需向链接添加
数据方法
属性,并将其设置为要使用的方法。它使用不引人注目的javascript创建具有正确输入的隐藏表单,并在单击链接时提交隐藏表单。如果您需要CSRF令牌,还可以设置
数据令牌
属性,如果您希望弹出确认框,还可以设置一类“action\u confirm”(操作确认)(CSRF令牌和确认框是Ryan更新的一部分)

完整使用示例:

<a href="post/1" data-method="delete" data-token="{{ csrf_token() }}" class="action_confirm">Delete Me</a>

一个更极端的选择是包含rails库(与Laravel配合使用很好),并阅读有关如何使其工作的文档。它将提供更多的灵活性,但具有更高的设置/学习曲线

$('#button').on('click', function(e){
    e.preventDefault(); // avoid redirect from clicking on the link
    $.ajax({
        url: $(this).prop('href'),
        type: 'PUT'
    });
});
<a href="post/1" data-method="delete" data-token="{{ csrf_token() }}" class="action_confirm">Delete Me</a>