F
Filament16mo ago
ejoi8

Hide "anonymous" actions in create page

Hello everyone... I added anonymous actions to show modal contains checkbox to generate PDF respective to the selected checkbox.
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required()->label('Nama'),
TextInput::make('email')->email()->maxLength(255),
// anonymous actions - show modal popup contains checkbox to generate PDF respective to the category
Actions::make([
Action::make('Print PDF')
->form([
CheckboxList::make('category')
->options([
'profail' => 'profail',
'sale' => 'sale',
])
])
->action(function (array $data, $state, $record) {
// get the checkbox value, user_id to be process in controller
$data = array_merge($data,[ 'user_id' => $state['id']]);
return redirect()->route('pdf',['data' => $data]);
})
->hiddenOn('create')
)

]),
]);
}
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required()->label('Nama'),
TextInput::make('email')->email()->maxLength(255),
// anonymous actions - show modal popup contains checkbox to generate PDF respective to the category
Actions::make([
Action::make('Print PDF')
->form([
CheckboxList::make('category')
->options([
'profail' => 'profail',
'sale' => 'sale',
])
])
->action(function (array $data, $state, $record) {
// get the checkbox value, user_id to be process in controller
$data = array_merge($data,[ 'user_id' => $state['id']]);
return redirect()->route('pdf',['data' => $data]);
})
->hiddenOn('create')
)

]),
]);
}
Currently the Action button "Print PDF" are available both in create & edit page. My question is 1. How can I hide the action button in create page and only show in edit page?. - ->hiddenOn() it will cause Method Filament\Forms\Components\Actions\Action::hiddenOn does not exist. - ->hidden(function ( $state) { if (!$state) { return false; } }) it will show Typed property Filament\Forms\Components\Actions\Action::$component must not be accessed before initialization 2. How can I open new tab when the "Print PDF" Action Button is clicked?
Solution:
1 - Actions::make([...])->hiddenOn('create')
Jump to solution
4 Replies
Solution
LeandroFerreira
LeandroFerreira16mo ago
1 - Actions::make([...])->hiddenOn('create')
ejoi8
ejoi8OP16mo ago
ahaa.. My bad.. previously I add the hiddenOn inside the Action::make... Thank you Next how can I open new tab when the action button is clicked?
LeandroFerreira
LeandroFerreira16mo ago
Hum, not sure. Actions allow ->url(...)->openUrlInNewTab() but I don't know if you can use it
ejoi8
ejoi8OP16mo ago
unfortunately the ->openUrlInNewTab() not working with ->action(). I ended download the pdf instead of viewing it in new tab. UserResource.php
Actions::make([
Action::make('pdf')
->label('Print PDF')
->form([
CheckboxList::make('category')
->options([
'profail' => 'profail',
'sale' => 'sale',
])
->bulkToggleable()
->columns(3),
])
->action(function (array $data, $state) {
$data = array_merge($data,[ 'user_id' => $state['id']]);
// Http/Controller/PdfControlelr
return (new PdfController)->generate($data);
}),
])->hiddenOn('create'),
Actions::make([
Action::make('pdf')
->label('Print PDF')
->form([
CheckboxList::make('category')
->options([
'profail' => 'profail',
'sale' => 'sale',
])
->bulkToggleable()
->columns(3),
])
->action(function (array $data, $state) {
$data = array_merge($data,[ 'user_id' => $state['id']]);
// Http/Controller/PdfControlelr
return (new PdfController)->generate($data);
}),
])->hiddenOn('create'),
PdfController.php
public function generate($data)
{
$user = User::findOrFail($data['user_id']);
$pdf = PDF::loadView('pdf.layout', compact('user','data'));
return $pdf->stream($user->id.'.pdf');
}
public function generate($data)
{
$user = User::findOrFail($data['user_id']);
$pdf = PDF::loadView('pdf.layout', compact('user','data'));
return $pdf->stream($user->id.'.pdf');
}
Want results from more Discord servers?
Add your server