[扩展推荐] 为你的 Laravel 模型增加分享功能(类百度网盘的文件分享)
39

file

Laravel 共享模型 扩展包允许你根据模型生成共享链接,只有当共享模型存在时,共享路由才会存在。

下面是该包作者 Kai Sassnowski 介绍该包的使用情况:

我最初的想法是给某些非管理员用户访问某个通常只能通过管理界面才能访问的资源。

我编写这个扩展包用来创建一个从我想分享的资源中生成一个全新的链接,而不是像我在应用中的其他任何路由一样,所以会有单独的控制器和视图。通过这条路由,你可以简单地只公开你想要的功能(例如只读或只显示某些字段)。

这个包让我想起了百度网盘中的「文件共享」功能. 你可以在文件共享应用里使用这个包来将特定的模型分享给外部用户, 而且还可以选择哪些文件以及哪些信息是你想要公开的.

你也可以在共享链接上添加访问密码和过期时间, 这可以使其他用户必须输入访问密码才可以查看此文件. 这个包还附带了一个可以自定义密码的视图.

创建可共享链接的基本示例如下所示:

<?php

$article = Article::find(1);

$link = ShareableLink::buildFor($article)
    ->setActive()
    ->build();

当你调用 build() 方法时,将在数据库中创建可共享的链接, 该链接将使用多态关系将文章与可共享的链接相关联。.

可共享路由一般是这个样子:

Route::get('shared/{shareable_link}', ['middleware' => 'shared', function (ShareableLink $link) {
    return $link->shareable;
});

共享的属性即是其关联模型的属性, 所以在上面那个路由实例中,它将返回模型的 JSON 格式数据.

以下是使用该扩展包生成的 URL 示例:

$ curl http://localhost:8000/shared/4aQQLDa525h8NVPGxLZ4hqx0l46

{
  "id": 1,
  "title": "The Raven",
  "contents": "Once upon a midnight dreary, while I pondered, weak and weary...",
  "created_at": "2017-05-31 19:35:28",
  "updated_at": "2017-05-31 19:35:28"
}

如果想了解有关 Laravel 可共享模型扩展包的更有信息, 请移步 文档 或者 GitHub.


Practice makes perfect.

原文地址:https://laravel-news.com/laravel-shareab...

译文地址:https://laravel-china.org/topics/7822/ex...

本帖已被设为精华帖!
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!