hugomyb / filament-media-action

Automatically display your media (video, audio, pdf, image, ...) with an action in Filament
MIT License
26 stars 2 forks source link

[Bug]: please give completed example #6

Closed Bellukchips closed 35 minutes ago

Bellukchips commented 2 hours ago

What happened?

BadMethodCallException PHP 8.2.12 10.48.22 Method Hugomyb\FilamentMediaAction\Actions\MediaAction::modal does not exist.

i just copied example and i have error

MediaAction::make('tutorial') ->iconButton() ->icon('heroicon-o-video-camera') ->media('https://www.youtube.com/watch?v=rN9XI9KCz0c&list=PL6tf8fRbavl3jfL67gVOE9rF0jG5bNTMi'),

How to reproduce the bug

y

Package Version

latest

PHP Version

8.2.12

Laravel Version

10

Which operating systems does with happen with?

Windows

Notes

No response

hugomyb commented 2 hours ago

Can you show me where in your code you put the MediaAction please?

Bellukchips commented 2 hours ago

`<?php

namespace App\Filament\Clusters\Audios\Resources;

use App\Filament\Clusters\Audios; use App\Filament\Clusters\Audios\Resources\AudioResource\Pages; use App\Filament\Clusters\Audios\Resources\AudioResource\RelationManagers; use App\Models\Audio\Audio; use Filament\Forms; use Filament\Forms\Form; use Filament\Pages\SubNavigationPosition; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; use Hugomyb\FilamentMediaAction\Actions\MediaAction; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope;

class AudioResource extends Resource { protected static ?string $model = Audio::class;

protected static ?string $navigationIcon = 'heroicon-o-list-bullet';

protected static ?string $cluster = Audios::class;
protected static SubNavigationPosition $subNavigationPosition = SubNavigationPosition::End;
public static function form(Form $form): Form
{
    return $form
        ->schema([
            Forms\Components\TextInput::make('name')->required()->maxLength('150'),
            Forms\Components\Select::make('category_id')->relationship('category', 'name')->required(),
            Forms\Components\TextInput::make('link')->url()
                ->required()
        ]);
}

public static function table(Table $table): Table
{
    return $table
        ->columns([
            Tables\Columns\TextColumn::make('name')->sortable()->searchable(),
            Tables\Columns\TextColumn::make('category.name')->sortable()->searchable(),
            MediaAction::make('link')
                ->iconButton()
                ->icon('heroicon-o-video-camera')
                ->media('https://www.youtube.com/watch?v=rN9XI9KCz0c&list=PL6tf8fRbavl3jfL67gVOE9rF0jG5bNTMi'),
        ])
        ->filters([
            Tables\Filters\SelectFilter::make('category')->relationship('category', 'name'),
        ])
        ->actions([

            Tables\Actions\EditAction::make(),
            Tables\Actions\DeleteAction::make(),
        ])
        ->bulkActions([
            Tables\Actions\BulkActionGroup::make([
                Tables\Actions\DeleteBulkAction::make(),
            ]),
        ]);
}

public static function getRelations(): array
{
    return [
        //
    ];
}

public static function getPages(): array
{
    return [
        'index' => Pages\ListAudio::route('/'),
        'create' => Pages\CreateAudio::route('/create'),
        'edit' => Pages\EditAudio::route('/{record}/edit'),
    ];
}

}

this my code, i will play audio url from database

`

Bellukchips commented 2 hours ago

I've tried putting it in a table action, but the result is still the same.

BadMethodCallException PHP 8.2.12 10.48.22 Method Hugomyb\FilamentMediaAction\Actions\MediaAction::modal does not exist.

Bad Method Call Did you mean Hugomyb\FilamentMediaAction\Actions\MediaAction::model() ?

hugomyb commented 1 hour ago

You can't put an Action directly as a column in a table, you have to put the MediaAction in the ->action() method of Column for example :

->columns([
            Tables\Columns\TextColumn::make('name')->sortable()->searchable(),
            Tables\Columns\TextColumn::make('category.name')->sortable()->searchable(),
            Tables\Columns\IconColumn::make('your_media_column')
                    ->boolean()
                    ->trueIcon('heroicon-o-photo')
                    ->action(\Hugomyb\FilamentMediaAction\Tables\Actions\MediaAction::make('link')
                          ->iconButton()
                          ->icon('heroicon-o-video-camera')
                          ->media('https://www.youtube.com/watch?v=rN9XI9KCz0c&list=PL6tf8fRbavl3jfL67gVOE9rF0jG5bNTMi'),
                     ),
        ])

And use the correct import, here you are in a table so : \Hugomyb\FilamentMediaAction\Tables\Actions\MediaAction Not : \Hugomyb\FilamentMediaAction\Actions\MediaAction