[李景山php]每天laravel[015]-laravel 中级任务翻译---删除任务

47 篇文章 0 订阅

删除任务:
添加删除按钮:

我们在我们的代码里面留下了 “TODO” 记号,这个位置将会被我替换成我删除按钮,所以,让我们在 tasks/index.blade.php 视图里面的每一行都添加一个删除按钮来监听删除事件。我们将会创建一个小的单独的按钮form表单对于每一个任务列表。当这个按钮被点击,一个 删除动作 / task 请求将会被发送到应用里面,这个启动我们的TaskController@destory 方法。

这里写图片描述

一个标记在函数里面哄骗

标记这个删除按钮表单的提交方法作为POST方式,甚至虽然我们通过路由 Route::delete来反馈通过请求。
HTML 表单仅仅允许GET和POST方式进行HTTP提交,所以,我们需要通过一种途径来欺骗请求方式在我们的form表单里面。

我们可以欺骗一个 delete 类型的请求通过 在表单中使用 method_field(‘DELETE’)函数。这个函数产生一个隐藏表单input 方式,laravel 承认这个,并且将会重写实际的HTTP请求方法,创建的字段如下图:

 <input type="hidden" name="_method" value="DELETE">

路由绑定:

现在,我们几乎准备定义这个 destory 方法在我们的TaskController 控制器里面。但是,首先,让我们在回顾一下我们的路由定义。
Route::delete(‘task/{task}’,’TaskController@destory’);

不需要添加任何额外的代码,laravel 将会注入这个 给到的任务ID到 TaskController@destory 方法里面,

这里写图片描述
然而,在任何事情开始前,我们都需要恢复任务实例通过ID在数据库里面查找。所以,再好不过了,如果laravel 框架仅仅注入 Task 实例,首先匹配到地i个地方,让我们更好的处理一下。

在你的 app/Providers/RouteServiceProvider.php 文件里面的 boot 函数,让我们添加如下的代码。
这里写图片描述

这个简单一行代码将会指导 laravel 框架检索 task 模型,这个模型匹配一个ID,这个ID从路由文件中{task}里面获取到的。现在我们定义我们的销毁方法。

这里写图片描述
认证:

现在,我们拥有一个 Task 实例注入我们的 destory 方法,然而,我们没办法保证认证用户实际拥有自己的任务列表,举个例子,一条恶意的请求图谋尝试删除其它人的任务通过一个随机的任务ID到 /task/{task}地址,所以,我们需要laravels 框架认证能力能够确保作者实际拥有 Task 实例,在路由中指向的。

创建一个政策:

laravels 使用 “policies”来组织认证逻辑到简单的、小的类,典型的,每个政策匹配一个模型,所以,让我们创建一个 TaskPolicy 使用artisan 命令行,
这个将会生产存放文件 app/Policies/TaskPolicy.php

php artisan make:policy TaskPolicy

这里写图片描述
接下来,让我们添加一个 destory 方法到这个policy。 这个方法将会接收到 User 实例化跟 一个 Task 实例化。这个方法应该简单的检查这个用户的ID是否匹配 user_id 在任务里面的。所以这个方法返回的就只有 true 跟 false 方式。

这里写图片描述

最后,我们需要联合我们Task 模型跟我们的 TaskPolicy 。 我们做这些,通过添加一个行 app/Providers/AuthServiceProvider.php , 这个将会通知 laravel
应该使用 U

这里写图片描述

认证这个行为:

现在我们的政策已经写完了,让我们使用我们的destory 方法,所有的 laravel 控制器可以调用 authorize 方法。这个 暴露了一个 AuthorizesRequest trait
这里写图片描述

通过调用一下来检查这个方法,这个第一个参数传递到 authorize 方法是这个政策
请确认阅读完整的 authorization 文档。

删除任务:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值