在 Laravel 5.5 项目中,我有一个带有 destory
方法的学生 Controller 。
public function destroy(Student $student)
{
//destroy $student and redirect
}
我的 Controller 路线如下
Route::delete('/student/{id}', 'StudentController@destroy');
现在我们来回答这个问题。
我有一个管理学生的页面,它有一个删除按钮。
<a class="btn btn-danger"
href="{{ action('StudentController@destroy', ['id' => $student->id]) }}" >
Delete
</a>
当我单击删除按钮时,它会抛出方法不允许异常
,因为该请求不是删除请求。 是否有任何方法/解决方法可以通过 action()/route()
辅助函数指定/欺骗请求方法?
通常我会创建一个带有隐藏_method="delete"
输入的表单并发布该表单。但如果我要添加更新按钮,那么我必须创建另一个带有隐藏 _method="patch"
的表单,我认为这不是一个好的做法。
请提供一些前进的想法。
最佳答案
回答您的问题 - 是的,您应该创建允许您删除学生的表单。这就是 REST 的使用方式 - 您无需创建解决方法,而只需对给定操作使用有效的 HTTP 方法。
还有一个原因导致您不应该为此使用链接和 GET 方法。例如,假设您删除学生的 URL 如下所示:
http://example.com/students/1/delete
当您在浏览器中输入网址时,浏览器通常会记住以前的网址,因此如果您使用 GET 方法删除学生,则可能会错误地删除某些学生。
当然,在上面的示例中,您可以使用 JavaScript,当您单击将运行有效 HTTP 操作的链接时,该 JavaScript 将启动,但这可能意味着比使用简单表单需要更多工作。
关于php - laravel action() 辅助方法中的欺骗请求方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46872794/