outl1ne / nova-settings

A Laravel Nova tool for editing custom settings using native Nova fields.
MIT License
273 stars 97 forks source link

Issue deleting Images #2 #75

Closed axp-dev closed 2 years ago

axp-dev commented 3 years ago

Version 3.2.1 - Nova Version: 3.27.0

Code:

public function boot()
  {
      NovaSettings::addSettingsFields([
          Tabs::make('Common', [
              Tab::make('Header', [
                  Image::make('Logo', 'headerLogotype'),
              ]),

              Tab::make('Footer', [
                  Image::make('Logo', 'footerLogotype'),
                  Textarea::make('Copyright', 'footerCopyright')->rows(2)
              ]),
          ]),
      ], [], 'Common');

      parent::boot();
  }

Error deleting image:

  404 ERROR
  /nova-api/nova-settings/settings/field/headerLogotype
Tarpsvo commented 3 years ago

Hi! I could not reproduce this issue. Can you try clearing your routes cache? Thanks!

axp-dev commented 3 years ago

There are no routes in the cache

php artisan route:list Domain Method URI Name Action Middleware
GET HEAD nova-vendor/nova-settings/settings nova-settings.get OptimistDigital\NovaSettings\Http\Controllers\SettingsController@get nova
OptimistDigital\NovaSettings\Http\Middleware\Authorize
OptimistDigital\NovaSettings\Http\Middleware\SettingsPathExists
POST nova-vendor/nova-settings/settings nova-settings.save OptimistDigital\NovaSettings\Http\Controllers\SettingsController@save nova

config/nova-settings.php

<?php

return [
    'table' => 'settings',

    'base_path' => 'settings',

    'reload_page_on_save' => false,

    'models' => [
        'settings' => App\Models\Settings::class,
    ],
];

app/Models/Settings.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use OptimistDigital\NovaSettings\Models\Settings as Model;

class Settings extends Model
{
    use HasFactory;
}
Tarpsvo commented 3 years ago

Interesting, you're missing the delete image route altogether. I can look into it again tomorrow.

This route is missing: https://github.com/optimistdigital/nova-settings/blob/895425944e26b552ef3d8f993ca2f7327fb2ce07/routes/api.php#L22

axp-dev commented 3 years ago

I didn't see him. But he is

php artisan route:list Domain Method URI Name Action Middleware
GET HEAD nova-vendor/nova-settings/settings nova-settings.get OptimistDigital\NovaSettings\Http\Controllers\SettingsController@get nova
OptimistDigital\NovaSettings\Http\Middleware\Authorize
OptimistDigital\NovaSettings\Http\Middleware\SettingsPathExists
POST nova-vendor/nova-settings/settings nova-settings.save OptimistDigital\NovaSettings\Http\Controllers\SettingsController@save nova
DELETE nova-api/nova-settings/{path}/field/{fieldName} OptimistDigital\NovaSettings\Http\Controllers\SettingsController@deleteImage nova

If you add an entry to web.php, then everything works correctly

Route::delete('/nova-api/nova-settings/{path}/field/{fieldName}', 'OptimistDigital\NovaSettings\Http\Controllers\SettingsController@deleteImage');
Tarpsvo commented 2 years ago

Huge thanks to @ahmetbedir who fixed the issue. :) It should now work as intended in version 3.2.3. Good luck!