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

翻译 Summer ⋅ 于 4个月前 ⋅ 1613 阅读 ⋅ 原文地址
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

file

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

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

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

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

Kevinvinvin 翻译于 4个月前

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

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

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

<?php

$article = Article::find(1);

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

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

Robinson 翻译于 4个月前

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

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.

Kevinvinvin 翻译于 4个月前

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

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


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

本帖已被设为精华帖!
回复数量: 0
    暂无评论~~
    您需要登陆以后才能留下评论!

    Composer 中国全量镜像

    Top 100 扩展包

    Lumen 中文文档

    Laravel 速查表

    Laravel 中文文档

    Laravel 项目开发规范

    Laravel 开发环境部署

    社区文档撰写指南

    TDD 构建 Laravel 论坛笔记

    PHP PSR 标准规范

    PHP 设计模式全集

    Dingo API 中文文档