ctf0/odin

用于管理模型版本的图形用户界面

维护者

详细信息

github.com/ctf0/Odin

主页

源代码

问题

资助包维护!
ctf0

v2.2.0 2021-01-28 07:48 UTC

README

Odin
Latest Stable Version Total Downloads

轻松管理模型版本。

如果您也想在提交到数据库之前预览表单数据,您可能想尝试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 合同添加到您的模型

    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_idid 默认排除在审计日志之外。

  • data:uri

    • 如果您在可修订内容中使用 data:uri,在迁移之前将 audits_table 列的类型更改为 mediumTextlongText,以避免将来长数据的错误。

    • 因为 data:uri 是一个渲染阻塞且无法由人类阅读,所以我们将其截断为最多 75 个字符
      请注意,这 影响版本差异的显示,我们永远不会触摸保存到数据库中的数据。

  • 模型关系

    • 目前关系版本有限,这意味着我们只能显示 attach/detach 变化,但我们无法通过包本身 undo/redo 任何变化。
    • 此外,如果您使用类似 Model::update() 的批量更新,请确保之后调用 $model->touch(); 以确保创建审计,例如。
      $model = Model::update([...]);
      $model->touch();

安全

如果您发现任何与安全相关的问题,请通过电子邮件发送到 ctf0-dev@protonmail.com