目前我有一个控制器,它控制发送的数据和完成的操作
例如,当我点击主页时,我会点击Route::get('home', 'Controller@select');
,它会选择现有数据并在该页面显示。
在同一页面上,我提供了一个表单,用户可以在其中输入数据并按下提交按钮,这将点击此Route::post('home', 'Controller@insert');
,这是有效的,因为它可以区分GET(从其他页面到主页)和POST (来自同一页面,但是从提交按钮表单输入)。
现在,我在同一页面上有DELETE按钮,但这个是我使用get,所以如果我仍然使用Route::get('home', 'Controller@delete');
,它就不会工作,因为它Controller@select
会覆盖它。
我的问题是如何检测请求的来源,以便为用户的不同请求准备不同的操作?
我有一个基本的PHP知识,我希望它类似于if(isset($_GET['delete']))
,删除操作。
另一种解决方案是将所有页面移动到不同的页面,然后将其重定向到主页,但我仍然希望坚持使用相同的页面,以便用户方便地查看数据流。
答案 0 :(得分:0)
如果您使用Route :: get(' home',' Controller @ select'),您需要更改路线;当你去url home进行删除时你会注意到Controller-> select()方法你应该尝试像Route::get('home/delete', 'Controller@delete');
这样的东西,当你去url home / delete会指出到Controller->delete()
答案 1 :(得分:0)
您可以添加"?delete = 1"然后检查它"选择"方法;
Route::post('delete', 'Controller@drop');
或者你可以Route::delete('home', 'Controller@drop')
;
但是你必须通过ajax请求发出删除请求,如:
$("#deleteButton").click(function() {
$.ajax({
method: "DELETE",
url: "index.php",
})
});
答案 2 :(得分:0)
当您尝试执行删除操作时,应将方法设置为DELETE
。但是,默认情况下,我们只有GET
和POST
方法。 Laravel有很好的环绕(method_field()
)来实现这个目的。您只需在表单中添加_method
字段即可。
Route::destroy('home', 'Controller@destroy');
<form method="POST" action="home">
{!! csrf_field() !!}
{!! method_field('DELETE') !!}
</form>
$.ajax({
url: "home",
method: "POST",
data : { '_method' : 'DELETE', '_token' : 'YOUR CSRF TOKEN HERE'}
})