This is a plugin/package to use the file system from Octobercms to work on laravel. This plugin will be very helpful if you have 2 projects (Laravel & Octobercms) with the same 1 DB.

1.1.5 2023-04-03 05:13 UTC

This package is auto-updated.

Last update: 2024-05-03 07:30:42 UTC


README

Noto is a package intended to help synchronize filesystems between OCTOBERCMS and LARAVEL. By following the octobercms filesystem flow. Package includes:

  • file relations
  • use of system_files table
  • naming the path / disk name of the file
  • the naming of the relation model of the OCTOBERCMS model

Requirement

  • PHP 8.0.28
  • LARAVEL Framework 9.52.5

Dependency

  • intervention/image

Installation

Run composer require agifsofyan/noto

Configuration

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

Will create :

  • config file noto.php in the config folder.

    <?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 is the path of the LARAVEL model used
    • file_table is the database table name for the file to be used. The default for OCTOBERCMS is system_files.
    • model_sync are the registered models. And this is mandatory.
    • index (left side) of model_sync is the model name of your LARAVEL project.
    • the value (right side) of model_sync is the model name of your OCTOBERCMS project.
  • migration file 2023_01_31_000001_Db_System_Files.php in the database/migrations folder.

    Run php artisan migrate

Use

  • Adding use Agifsofyan\Noto\Traits\NotoMorph; in your model as Traits.

    Sample:

      <?php
    
      namespace App\Models;
    
      use Agifsofyan\Noto\Traits\NotoMorph;
    
      class User
      {
          use NotoMorph;
  • Adding file relation using morphOneNoto in your model if single upload file.

    Sample:

      public function avatar()
      {
          return $this->morphOneNoto('avatar');
      }
  • Adding file relation using morphManyNoto in your model if multiple upload file.

    Sample:

      public function avatars()
      {
          return $this->morphManyNoto('avatars');
      }
  • To Save file use this from your controller after save / update the model data: Sample:

      $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 from your model where the morphOneNoto or morphManyNoto relations are registered.

    If update data use $user->save() don't use $user->update().

  • Call the File Url

    Call the thumbnail file:

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

    Call the original file:

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