Vai al contenuto

Aggiungere un Action in Filamentphp

Featured Replies

Inviato
  • Admin

Cosa è una Action?

 

Cosa è un Action? "Action" è una parola che viene utilizzata abbastanza frequentemente all'interno della comunità di Laravel. Tradizionalmente, le classi PHP di Action gestiscono il "fare" qualcosa nella logica aziendale della tua applicazione. Ad esempio, effettuare l'accesso di un utente, inviare una email o creare un nuovo record utente nel database.

In Filament, le action gestiscono anche il "fare" qualcosa nella tua app. Tuttavia, sono un po' diverse dalle action tradizionali. Sono progettate per essere utilizzate nel contesto di un'interfaccia utente. Ad esempio, potresti avere un pulsante per eliminare un record cliente, che apre una finestra modale per confermare la tua decisione. Quando l'utente fa clic sul pulsante "Elimina" nella finestra modale, il cliente viene eliminato. Tutto questo flusso di lavoro è un'action.

 

Succede spesso che quando si usa un nuovo componente ci si imbatte in grosse difficoltà con una documentazione scialba e confusionaria.

image.png

Mettiamo caso che vogliate mettere un nuovo pulsante accanto a New Video, quello che viene automaticamente generato da Filamentphp, come quello che abbiamo messo noi "Import Video".

Per far ciò avremmo bisogno di accedere al ManageRecords della nostra risorsa e aggiungere:

    protected function getHeaderActions(): array
    {
        return [
            Actions\CreateAction::make(),
            Action::make('massvideo')
                ->label('Import Video')
        ];
    }

Facendo così avremmo il nostro pulsante che una volta premuto accederà a una nuova pagina o come nel nostro caso a un modal.

Utilizzando un modal noi gli diamo subito una logica di funzionamento con i form e l'azione che deve compiere una volta effettuato l'invio, ecco il nostro tasto al completo:

    protected function getHeaderActions(): array
    {
        return [
            Actions\CreateAction::make(),
            Action::make('massvideo')
                ->label('Import Video')
                ->form([
                    Textarea::make('id_videos')
                        ->required(),
                    Select::make('id_gioco')
                        ->label('Gioco:')
                        ->relationship('game', 'name')
                        ->searchable()
                        ->required(),
                ])
                ->action(function (array $data): void {
                    massVideoYT($data['id_videos'], $data['id_gioco']);
                })
        ];
    }

Che si presenterà in questo modo:

Ovviamente il pulsante potrà essere personalizzato con:

->color('success')
->icon('fas-film')
->label('Import Video')

Ecco come si presenterà il nostro pulsante:

image.png

 

Se vuoi aggiungere un pulsante nella tabella anziché nell'header, vi basterà aggiungere il codice Action::make in ArticoliResource in ->actions, subito dopo quelli di default ViewAction,EditAction e DeleteAction

 

image.png

 

Come potete vedere nel codice riportato sopra, abbiamo introdotto all'Action una funzione. La funzione visible permette di stabilire alcune condizioni quando mostrare il pulsante. nel mio caso ho impostato che il pulsante deve apparire quando l'id_topic del $record è 0. 

 

 

nb: la nostra icona non è una heroicon in svg, ma bensì una font-awesome in svg, questo perché stiamo utilizzando il package owenvoke/blade-fontawesome

 

  • Askancy ha cambiato il titolo in Aggiungere un Action in Filamentphp
  • Askancy ha cambiato il titolo in Aggiungere un Action nell'header di Filamentphp

Per favore accedi per lasciare un commento

Potrai lasciare un commento dopo aver effettuato l'accesso

Accedi Ora

Chi sta navigando 0

  • Nessun utente registrato visualizza questa pagina.

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.