michaeljoyner/edible

将yaml文件中概述的基本内容结构映射到Laravel应用程序中的Eloquent模型。

v0.1.19 2016-08-23 03:34 UTC

This package is auto-updated.

Last update: 2024-09-23 16:42:00 UTC


README

将内容结构(由包含文本块和相册的页面组成)映射到Laravel应用程序中的Eloquent模型。用户,通常在某种类型的后台部分,可以编辑文本块和相册的内容,但不能控制它们的创建和删除。

假设

该包非常有意见,因为它旨在与我设置的流程/站点结构协同工作。因此,它做出了几个大型假设,我希望能在未来消除它们。然而,目前,这个包假设

  • Vue.js,以及vue-resource,包含在您的脚本中。此外,该包中包含的Vue组件已注册到Vue
  • 包含并可用TinyMCE
  • css目录中包含的CSS包含在任何适用的页面上

安装和设置

通过composer安装包

composer require michaeljoyner/edible

添加服务提供者

//config/app.php

$providers = [
    ...
    Michaeljoyner\Edible\EdibleServiceProvider::class,
    ...
];

发布迁移和视图

php artisan vendor:publish --provider="Michaeljoyner\Edible\EdibleServiceProvider"

您需要转到您的 resources/views/vendor 文件夹以调整视图以与您的视图结构协同工作。

运行迁移: php artisan migrate

您的edible.yaml文件

您需要在应用程序根目录中创建一个名为edible.yaml的文件。该文件必须遵循此示例中显示的结构

pages:
  home:
      description: The homepage
      textblocks:
          intro:
              description: The homepage intro
              allows_html: false
          spiel:
              description: Company story
              allows_html: true
      galleries:
          slider:
              description: Homepage banner slide images
              is_single: false
  about:
        description: The about page
        textblocks:
            intro:
                description: The about page intro
                allows_html: false
            spiel:
                description: My story
                allows_html: true
        galleries:
            slider:
                description: About page banner slide images
                is_single: false

edible.yaml文件描述了一组页面。每个页面都有一个描述和一组文本块和相册。每个文本块都有一个描述和一个布尔标志,用于确定文本是否作为HTML(即使用WYSIWYG编辑器)或纯文本进行编辑。每个相册都有一个描述和一个布尔标志,用于确定它是一张单独的图片还是一组图片。如果is__single为true,上传的每个图片将覆盖之前的图片。

映射到模型

一旦您的edible.yaml文件完成,您可以运行php artisan edible:map。您将看到将要进行的更改的摘要,并在继续之前要求确认。如果您选择继续,edible文件的内容将被映射到Eloquent模型并存储在数据库中。

更新edible.yaml文件

要添加新页面、文本块或相册,只需将其添加到您的edible.yaml文件中即可。下次您运行php artisan edible:map时,它们将被添加。现有内容将保持不变。

要删除页面、文本块或相册,只需从edible.yaml文件中删除它。显然,这也会删除相关的内容。

不要 修改现有页面、文本块或相册的名称,因为 您将丢失现有内容。而是确保在推送到生产环境之前,您获得了正确的名称和描述。通过编辑现有页面、文本块或相册的名称,在您下一次映射时,它将将其视为一个新实例,并删除“旧”的一个及其内容。

编辑内容

服务提供者注册路由,指向edible文件中描述的每个页面,从而可以从那里编辑/管理每个文本块或相册。我通常做的是,并且希望很快自动包含,是为我的后台部分的导航栏创建一个视图合成器,以便为导航视图提供页面及其URL的列表,以便我可以创建菜单链接。《code>ContentRepository->getPageListWithUrls()方法为此原因存在。

在视图中使用内容

使用 Michaeljoyner\Edible\ContentRepository 类来访问您视图中的内容。通常在控制器中,您会使用 ContentRepository 方法 getPageByName 来检索所需的页面。这将返回一个 Michaeljoyner\Edible\Models\Page 实例,可用于获取内容。下面将给出一个示例

// $page is an instance of Michaeljoyner\Edible\Models\Page

// to get the contents of a textblock
$page->textFor('name-of-textblock', 'default string'); // returns a string

// to get the images of a gallery

$page->imagesOf('gallery-name') // returns a laravel collection of Spatie's Laravel-MediaLibrary Media objects