I'm a bit stuck wondering what I'm doing wrong. I'm trying to use the spatie/laravel-medialibrary & ebess/advanced-nova-media-library together with nova-flexible-content In nova it works wonderful but can't get the image show in my blade. If anybody has any suggestions or know what I'm doing wrong. Thanks in advance for your time :) I followed there guide too: https://whitecube.github.io/nova-flexible-content/#/?id=usage-with-ebessadvanced-nova-media-library
My layout looks as follows:
<?php
namespace App\Nova\Flexible\Layouts;
use Whitecube\NovaFlexibleContent\Layouts\Layout;
use Spatie\MediaLibrary\HasMedia;
use Ebess\AdvancedNovaMediaLibrary\Fields\Images;
use Whitecube\NovaFlexibleContent\Concerns\HasMediaLibrary;
class Image extends Layout implements HasMedia
{
use HasMediaLibrary;
protected $name = 'image';
protected $title = 'Image';
public function fields()
{
return [
Images::make('Image', 'images'),
];
}
}
And my model:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Whitecube\NovaFlexibleContent\Concerns\HasFlexible;
class Job extends Model implements HasMedia
{
use HasFactory;
use HasFlexible;
use InteractsWithMedia;
protected $guareded = [];
protected $casts = [
'publish_date' => 'date',
];
}
Controller:
public function show(Job $job)
{
return view('jobs.show', compact('job'));
}
Blade:
@foreach ($job->flexible('content') as $block)
{{ $block->getMedia('images') }}
@endforeach
composer:
"ebess/advanced-nova-media-library": "^4.0",
"spatie/laravel-medialibrary": "^10.0.0",
"whitecube/nova-flexible-content": "^1.0"
Following answer also can be found in the related Github issue.
I just solved my problem and it was that I'm casting the wrong class.
Let me explain a little bit more:
protected $casts = [
'layouts' => \Whitecube\NovaFlexibleContent\Value\FlexibleCast::class
];
protected $casts = [
'layouts' => \App\Casts\MyFlexibleCast::class
];
If you're using custom layout classes like me, you need to cast the right class.