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

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.

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

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

译文地址:https://learnku.com/laravel/t/7822/exten...

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!