板 / 发布者
一个用于在Laravel应用程序中发布内容的流程。
Requires
- php: ^8.1
- illuminate/contracts: ^10|^11
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.1.1|^7.10.0
- orchestra/testbench: ^9.0.0|^8.22.0
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.5
- pestphp/pest-plugin-laravel: ^2.0
- dev-main
- v0.0.21
- v0.0.20
- v0.0.19
- v0.0.18
- v0.0.17
- v0.0.16
- v0.0.15
- v0.0.14
- v0.0.13
- v0.0.12
- v0.0.11
- v0.0.10
- v0.0.9
- v0.0.8
- v0.0.7
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-dependabot/github_actions/paambaati/codeclimate-action-9.0.0
- dev-dependabot/github_actions/paambaati/codeclimate-action-8.0.0
- dev-bump-11
- dev-5-model-events-bug
- dev-queued-deletes
- dev-publishable-attributes
This package is auto-updated.
Last update: 2024-08-26 05:08:14 UTC
README
Laravel 发布者
⚠️ 包处于积极开发中。请等待 v1.0.0 版本用于生产使用。⚠️
发布者是一个旨在以简单灵活的方式管理Laravel应用程序中内容发布工作流程的包。它被设计用于处理任何类型的内容,如博客文章、页面或其他可能需要发布工作流程的内容。
发布者旨在解决的关键需求之一是,能够在内容准备好发布之前,不对网站常规用户可见,同时确保现有已发布版本不会从网站上消失。
从版本 2+ 开始,发布者还将提供管理草稿状态内容关系的功能,而不会使相关的草稿内容对网站常规用户可见。
目录
安装
-
您可以通过composer安装此包
composer require plank/publisher
-
将
Plank\Publisher\Concerns\IsPublishable
特性和Plank\Publisher\Contracts\Publishable
接口添加到您希望遵循发布工作流程的模型中。 -
使用包的安装命令完成安装
php artisan publisher:install
配置
包的配置文件位于config/publisher.php
。如果您在安装期间未发布配置文件,可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Plank\Publisher\PublisherServiceProvider" --tag="config"
迁移列
每个可发布模型需要其表上的3列才能正常工作
工作流程
- 工作流程列存储模型的当前状态。它是否已发布,或作为草稿正在处理。
草稿
- 草稿列以json列存储属性的作业值
has_been_published
- has_been_published列存储一个布尔值,以指示模型是否曾经被发布。
作为进一步说明,理论上可以扩展workflow
列的值以包含更多状态,例如“in_review”。然而,有两个对包正常工作至关重要状态:一个是“已发布”状态,另一个是“未发布”状态。这些状态可以通过覆盖IsPublishable
特性中的publishedState
和unpublishedState
方法进行配置。
每当模型过渡到“已发布”状态时,has_been_published
列将被设置为true
,并且模型被视为已发布。
每当模型从“已发布”状态中移除时,模型属性的更改将持久化到draft
列,并且workflow
列将设置为“未发布”状态。
中间件
该包提供了一个可以切换应用程序中草稿内容可见性的路由中间件。这在允许特定用户在生产环境中预览草稿内容时非常有用。
如果您想全局使用包的中间件,应将其放置在\App\Http\Kernel
中,在\Illuminate\Routing\Middleware\SubstituteBindings::class
之前。
URL重写
该包提供了一种可选功能,它覆盖了框架方法(如url()
和route()
)生成的所有URL生成,以保留当前草稿内容的可见性。
您可以通过将配置文件中的urls.rewrite
键设置为false
来禁用此功能。
您还可以通过将 urls.previewKey
键设置为所需值来配置用于表示网站应显示草稿内容的 GET 查询参数。
当配置在 previewKey
中的值存在于 GET 查询中,并且用户具有 Gate
的 view-draft-content
权限时,该包将允许草稿内容并重写所有包含 previewKey
的 URL。
草稿路径
您可以为希望强制启用草稿内容的端点指定 请求路径模式。这对于您的管理面板和 CMS 路由尤为重要,因为在编辑/创建过程中,您将希望使用未发布的内容。
默认情况下,此包默认使用 Plank 的标准,在 Laravel Nova 中使用 admin/*
、nova-api/*
和 nova-vendor/*
定义。
权限 & 能力
您可以在应用程序服务提供器中定义具有相同名称的网关来覆盖包上定义的所有网关。
该包对所有网关的实现如下
Gate::define('publish', function ($user, $model) { return $user !== null; });
发布
此网关用于确定用户是否有发布模型的能力。默认情况下,网关定义为以下内容
取消发布
此网关用于确定用户是否有取消发布模型的能力。默认情况下,网关定义为以下内容
查看草稿内容
此网关用于确定用户是否有查看草稿内容的能力。默认情况下,网关定义为以下内容
贡献
请参阅 CONTRIBUTING 以获取详细信息。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。
安全漏洞
如果您在 siren 中发现安全漏洞,请发送电子邮件至 security@plank.co。所有安全漏洞都将得到及时处理。
了解我们!
Plank 致力于提供有影响力的解决方案,为我们的客户及其用户提供引人入胜的体验。我们致力于在数字空间中进行创新、包容和可持续性。 了解更多 关于我们改善网络使命的信息。