「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」
本篇对Laravel常用技巧进行汇总,如果大家想了解某一个分支下的使用技巧,比如集合、Eloquent等可以查看我之前的文章。
日志记录参数
我们可以使用 Log::info(),或使用更短的 info() 额外参数信息,来了解更多发生的事情
1 | bash复制代码Log::info('User failed to login.', ['id' => $user->id]); |
更方便的 DD
我们可以在 Eloquent 句子或者任何集合结尾添加 ->dd(),而不是使用 dd($result)。
1 | shell复制代码// 以前 |
使用 context 日志
在最新的 Laravel 8.49 中:Log::withContext() 将帮助我们区分不同请求之间的日志消息。
如果我们创建了中间件并且设置了 context,所有的长消息将包含在 context 中,我们搜索会更容易。
举例:
1 | php复制代码public function handle(Request $request, Closure $next) |
API 资源:带不带 “data”?
如果我们使用 Eloquent API 去返回数据,它们将自动封装到 data 中。
如果要将其删除,需要在app/Providers/AppServiceProvider.php
中添加 JsonResource::withoutWrapping()
;
1 | scala复制代码class AppServiceProvider extends ServiceProvider |
API 返回一切正常
如果我们有 API 端口执行某些操作但是没有响应,我们只想返回 “一切正常”:
我们可以返回 204 状态代码 “No content”。
在 Laravel 中,这就很简单: return response()->noContent();.
1 | php复制代码public function reorder(Request $request) |
一次检查多个权限
除了 @can Blade 指令外,还可以用 @canany 指令一次检查多个权限:
1 | less复制代码@canany(['update', 'view', 'delete'], $articles) |
更多关于用户注册的事件
希望在新用户注册后执行一些操作怎么优雅的实现呢?
我们可以转到 app/Providers/EventServiceProvider.php
和 添加更多的监听类,
然后在 $event->user 对象中实现 handle() 方法。
1 | scala复制代码class EventServiceProvider extends ServiceProvider |
Auth::once () 的使用
使用方法 Auth::once(),可以用用户登录一个请求。
Auth::once () 不会使用任何会话或 cookie,这意味着该方法在构建无状态 API 时可能很有帮助。
1 | less复制代码if (Auth::once($credentials)) { |
更改用户密码更新的 API 令牌
当用户的密码更改时,可以方便地更改用户的 API 令牌。这个实现非常重要
模型:
1 | php复制代码public function setPasswordAttribute($value) |
覆盖超级管理员的权限
如果你已经定义了网关(Gates)但是又想要覆盖超级管理员的所有权限。
给超级管理员所有权限,我们可以在 AuthServiceProvider.php 文件中用 Gate::before() 语句拦截网关(Gates)。
1 | php复制代码// 拦截任何一个网关,检查它是否是超级管理员 |
Last but not least
技术交流群请到 这里来。 或者添加我的微信 wangzhongyang0601 ,一起学习。
感谢大家的点赞、评论、关注,谢谢大佬们的支持,感谢。
本文转载自: 掘金