bkwld/decoy

Bukwild基于Laravel模型的CMS

5.11.1 2021-12-08 19:49 UTC

README

Decoy是一个为Laravel框架编写的PHP内容管理系统,允许您使用标准的Laravel Eloquent模型访问数据。

截图

Screenshot of example projects listing Screenshot of example project edit view Screenshot of example category edit view Screenshot of elements editor

关于

自2012年以来,Laravel 3以来,Bukwild一直在维护我们自己的内容管理系统,我们称之为Decoy。Decoy旨在降低实现内容管理系统的开发工作量,同时具有高度的灵活性。它可以帮助您生成一个外观美观、易于使用的管理界面;无需手动操作。

Decoy背后的驱动哲学是,CMS应该与您的面向公众的应用共享模型;您的应用仅通过标准的Laravel模型与Decoy存储的数据进行交互。这种方法使读取控制器代码变得简单(`Article::ordered()->take(6)->get()`),让您能够访问Laravel的mutators,以便您的视图具有可读性(`$article->full_date`),并允许您在管理界面和公开站点之间共享业务逻辑。没有额外的模板或查询语言需要学习。在设置CMS之后,开发人员将使用纯Laravel API与数据交互。

特性

除了以模型为中心的范式之外,Decoy还包括以下特性

  • 外观美观,无需培训的设计
  • 集成Croppa以支持高级图像功能,包括裁剪、设置焦点和存储替代文本
  • 通过Zencoder集成进行视频编码
  • 通过Redactor支持WYSIWYG文本编辑
  • 支持所有Laravel关系类型
  • 使用Former轻松创建内容编辑表单
  • 通过UpchuckFlysystem支持远程文件存储(S3等)
  • 细粒度的管理权限
  • 使用Bootstrap支持,可以完全自定义编辑视图
  • 命令面板,可以通过Web UI执行artisan命令
  • 即使在服务器之间也可以克隆内容
  • 本地化
  • 将键值对类型的数据组织为Elements
  • 在列表视图中拖放排序数据
  • 内置创建301和302重定向的接口
  • 所有配置存储在文件系统中,以保持您的团队通过Git(或任何VCS)同步

实现

Decoy作为composer包安装到您的应用中,与项目集成而不是作为独立安装。Decoy共享您公共站点的Eloquent模型并在常规Laravel迁移表中存储数据。您的控制器和视图不需要与Decoy有任何交互,而您的模型需要使用Decoy的Eloquent\Model子类,但在模型实例化时添加的行为非常少。换句话说,Decoy几乎不会为您的公共站点增加开销。

通过常见的MVC模式实现Decoy来管理模型,允许在每一步覆盖默认行为

  • 管理员导航、权限级别、本地化选项和其他设置存储在Laravel风格的php配置数组中
  • 对于每个可管理的数据库表/Eloquent模型,创建了一个Laravel风格的控制器,允许您覆盖默认设置,如模型标题的显示、描述、如何在管理员中搜索以及覆盖任何CRUD方法(创建、更新、删除等)。
  • 您指定验证规则、排序作用域以及在克隆模型时跟随哪些关系等功能,并添加特定命名的属性和方法。
  • 最后,创建一个常规的Laravel视图,包含在内容创建和编辑过程中应显示给管理员的表单。这比听起来更容易,因为有Former的支持以及许多Decoy独特的Former字段,如我们的图片上传器和wysiwyg类型。

下一步

有兴趣试试Decoy吗?查看快速入门指南