这是一个插件/包,用于从 Octobercms 文件系统工作于 Laravel。如果您有两个项目(Laravel 和 Octobercms)使用同一个数据库,这个插件将非常有用。

1.1.5 2023-04-03 05:13 UTC

This package is auto-updated.

Last update: 2024-10-03 08:43:11 UTC


README

Noto 是一个旨在帮助同步 OCTOBERCMS 和 LARAVEL 之间文件系统的包。通过遵循 OCTOBERCMS 文件系统流程。该包包括

  • 文件关系
  • 使用系统_files 表
  • 命名文件的路径/磁盘名称
  • 为 OCTOBERCMS 模型的关系模型命名

需求

  • PHP 8.0.28
  • LARAVEL 框架 9.52.5

依赖

  • intervention/image

安装

运行 composer require agifsofyan/noto

配置

运行 php artisan vendor:publish --provider="Agifsofyan\Noto\Providers\NotoServiceProvider"

将创建

  • 在 config 文件夹中创建配置文件 noto.php

    <?php
    
        return [
            'model_path' => 'App\Models',
            'file_table' => 'system_files',
            'model_sync' => [
                'User' => 'RainLab\User\Models\User'
            ],
            'extention' => ['jpg', 'jpeg', 'png', 'gif', 'docx', 'xlsx', 'svg', 'pdf']
        ];
    • model_path 是所使用的 LARAVEL 模型的路径
    • file_table 是要使用的文件的数据库表名。OCTOBERCMS 的默认值为 system_files。
    • model_sync 是注册的模型。这是必需的。
    • model_sync 的索引(左侧)是您的 LARAVEL 项目的模型名称。
    • model_sync 的值(右侧)是您的 OCTOBERCMS 项目的模型名称。
  • 在 database/migrations 文件夹中的迁移文件 2023_01_31_000001_Db_System_Files.php

    运行 php artisan migrate

使用

  • 在您的模型中将 use Agifsofyan\Noto\Traits\NotoMorph; 作为特质添加。

    示例

      <?php
    
      namespace App\Models;
    
      use Agifsofyan\Noto\Traits\NotoMorph;
    
      class User
      {
          use NotoMorph;
  • 如果只有一个上传文件,在您的模型中使用 morphOneNoto 添加文件关系。

    示例

      public function avatar()
      {
          return $this->morphOneNoto('avatar');
      }
  • 如果多个上传文件,在您的模型中使用 morphManyNoto 添加文件关系。

    示例

      public function avatars()
      {
          return $this->morphManyNoto('avatars');
      }
  • 要保存文件,请在模型数据保存/更新后从您的控制器中调用此操作:示例

      $user->create($data); // To create new data
      or
      $user->save(); // To create new data or update the data
    
      $field = 'avatar';
      $fields = 'avatars';
    
      if($request->hasFile($field) && $request->file($field)->isValid()){
          $user->saveOneFile($request->file($field), $field, $user->id);
      }
    
      if($request->hasFile($fields) && $request->file($fields)->isValid()){
          $user->saveManyFile($request->file($fields), $fields, $user->id);
      }

    您的模型中的 $user,其中注册了 morphOneNotomorphManyNoto 关系。

    如果更新数据,使用 $user->save() 而不要使用 $user->update()

  • 调用文件 URL

    调用缩略图文件

    $user?->avatar()?->getThumb(150, 150)

    调用原始文件

    $user?->avatar()?->getPath()