ctf0 / odin
用于管理模型版本的图形用户界面
v2.2.0
2021-01-28 07:48 UTC
Requires
- ctf0/package-changelog: *
- fico7489/laravel-pivot: *
- illuminate/support: >=5.4 <9.0
- owen-it/laravel-auditing: *
- phpspec/php-diff: ^1.1
README
Odin
轻松管理模型版本。
如果您也想在提交到数据库之前预览表单数据,您可能想尝试OverSeer。
- 包需要Laravel v5.4+
安装
-
composer require ctf0/odin
-
(Laravel < 5.5) 添加服务提供者 & 门面
'providers' => [ ctf0\Odin\OdinServiceProvider::class, ];
-
使用以下命令发布包资源
php artisan vendor:publish --provider="ctf0\Odin\OdinServiceProvider"
-
安装后,运行
php artisan odin:setup
以添加- 包路由到
routes/web.php
- 包资源编译到
webpack.mix.js
- 包路由到
-
请参阅 laravel-auditing 文档 进行配置
-
安装依赖项
yarn add vue vue-awesome@v2 vue-notif axios keycode
-
将以下一行代码添加到您的主js文件中,并运行
npm run watch
以编译您的js/css
文件。- 如果您遇到问题 检查。
// app.js window.Vue = require('vue') require('../vendor/Odin/js/manager') new Vue({ el: '#app' })
功能
-
支持单级和嵌套值。
-
删除和恢复版本。
-
支持软删除。
-
版本预览.
-
清除永久删除模型的审计。
php artisan odin:gc
- 这也可以安排为计划任务
$schedule->command('odin:gc')->sundays();
- 这也可以安排为计划任务
-
快捷键
-
事件 "JS"
用法
-
运行
php artisan migrate
-
将
Revisions
特性和AuditableContract
合同添加到您的模型- 对于
User
模型 检查
use ctf0\Odin\Traits\Revisions; use Illuminate\Database\Eloquent\Model; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; class Post extends Model implements AuditableContract { use Revisions; /** * resolve model title/name for the revision relation * this is needed so we can render * the model relation attach/detach changes */ public function getMiscTitleAttribute() { return $this->name; } // ... }
- 对于
-
您可以使用以下方法禁用创建两个都为空的 幽灵 审计
- 请记住,如果没有父模型审计日志,我们无法显示关系变化
// app/Providers/EventServiceProvider use OwenIt\Auditing\Models\Audit; public function boot() { parent::boot(); Audit::creating(function (Audit $model) { if (empty($model->old_values) && empty($model->new_values)) { return false; } }); }
-
在模型视图中添加
@if (count($post->revisionsWithRelation)) @include('Odin::list', ['revisions' => $post->revisionsWithRelation]) @endif
注意
-
模型
user_id
和id
默认排除在审计日志之外。 -
data:uri
-
如果您在可修订内容中使用
data:uri
,在迁移之前将audits_table
列的类型更改为mediumText
或longText
,以避免将来长数据的错误。 -
因为
data:uri
是一个渲染阻塞且无法由人类阅读,所以我们将其截断为最多 75 个字符
请注意,这 仅 影响版本差异的显示,我们永远不会触摸保存到数据库中的数据。
-
-
模型关系
- 目前关系版本有限,这意味着我们只能显示
attach/detach
变化,但我们无法通过包本身undo/redo
任何变化。 - 此外,如果您使用类似
Model::update()
的批量更新,请确保之后调用$model->touch();
以确保创建审计,例如。$model = Model::update([...]); $model->touch();
- 目前关系版本有限,这意味着我们只能显示
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送到 ctf0-dev@protonmail.com。