oxygencms/oxy-nova

一套用于Laravel Nova的工具体和样板代码。

v2.0 2021-07-08 11:12 UTC

README

安装

在您的 composer.json 中添加 "oxygencms/oxy-nova": "@dev" 来获取此包。

composer require oxygencms/oxy-nova

由于此包需要 spatie/laravel-medialibrary 来处理上传和媒体文件,请确保您已发布并运行了它的迁移。

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"

默认情况下,文件转换将被排队。建议在您的 .env 文件中设置 QUEUE_CONNECTION=redis。如果这样做,请确保也创建了 failed_jobs 表。然后像往常一样运行队列工作进程。

php artisan queue:failed-table

配置

发布 oxygen.php 配置文件。

php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=config

config/filesystem.php 文件中定义媒体库的 'media' 磁盘。

    'media_disk' => [
        'driver' => 'local',
        'root' => storage_path('app/public/media'),
        'url' => env('APP_URL').'/media',
        'visibility' => 'public',
    ]

发布媒体库的配置。

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag=config

config/medialibrary.php 中设置默认的 disk_name可选的 image_driver

'disk_name' => 'media',

'image_driver' => 'imagick'

翻译文件

使用 translations 标签发布每个配置语言环境的语言文件。(目前有 BG 和 NL)。

php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=translations

视图

可以使用 views 标签发布视图。

php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=views

迁移、种子和工厂

要发布此包的工厂,可以使用 factories 标签

php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=factories

要发布此包的迁移,可以使用 migrations 标签

php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=migrations

要发布此包的种子,可以使用 seeds 标签

php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=seeds

要一次性发布所有上述内容,可以使用 database 标签

php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=database

要将一些测试数据添加到包的实体中,请将 SEED_TEST_DATA=true 添加到 .env 文件中,并使用 php artisan migrate:fresh --seed 命令对数据库进行初始化。

控制台

有一个 artisan 命令,可以快速使用默认配置进行设置。

php artisan oxy-nova:setup

测试

要运行测试,请在项目的 phpunit.php 文件中包含一个 <testsuite> 标签,并将其指向测试目录。

<testsuite name="OxyNova">
    <directory suffix="Test.php">./vendor/oxygencms/oxy-nova/tests</directory>
</testsuite>

功能

短语

短语是一种将翻译存储在数据库中的整洁方式,以便可以编辑。为了使用它们,我们需要在 config/app.php 中将默认的 TranslationServiceProviderPhraseServiceProvider 交换。

//        Illuminate\Translation\TranslationServiceProvider::class,
        Oxygencms\OxyNova\Providers\PhraseServiceProvider::class,

短语缓存需要支持标签的缓存驱动器!predis/predis 已经在包的 composer 文件中要求,因此我们还需要配置 laravel 使用它。在 .env 文件中设置。

CACHE_DRIVER=redis

然后短语和翻译都可以通过标准的 Laravel 辅助函数 @lang()__()trans()trans_choice() 访问。如果数据库中存在具有给定组/键的短语,则将返回并缓存它。如果不存在,则返回翻译文件中的内容。如果两者都存在,则 DB 中的内容将优先。

页面

使用页面可以更轻松地管理应用程序的内容和 SEO。如果页面在给定的语言环境中具有不同的 slug,则访问该 slug 将更改应用程序的语言环境。在页面上,通过按 setLocale 路由来更改应用程序的语言环境时,将重定向到所选语言环境中的页面 slug。页面可以通过 $page->sections(): HasMany 关系具有许多部分。在 $page->delete() 上,将软删除属于页面的所有部分,并在 $page->resotre() 上自动恢复。

页面部分

页面部分提供了一个简单的方法来向页面添加额外的内容。拥有页面的访问可以通过$pageSection->page(): BelongsTo关系进行。当更新页面部分时,如果APP_ENV=production,则名称将不再是可以编辑的字段,因为它可能在视图或控制器中使用,以访问给定页面的一部分。