michaeljoyner/edible
将yaml文件中概述的基本内容结构映射到Laravel应用程序中的Eloquent模型。
Requires
- php: ^5.5|^7.0
- illuminate/support: ^5.1
- spatie/laravel-medialibrary: ^3.16
- symfony/yaml: ^2.6 || ^3.0
Requires (Dev)
- illuminate/container: ^5.2
- illuminate/database: ^5.2
- illuminate/routing: ^5.2
- phpunit/phpunit: ^4.8
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