Can a Relation manager use get actions?

I have a Resource for category and a relation for posts in that category, I want to create a generate button sort of like create button on the top right hand side. I have this in my PostRelationsManager.php
protected function getActions(): array
{
$actions[] = CreateAction::class::make();
$actions[] = Action::make('Generate')
->color('danger')
->requiresConfirmation()
->icon('heroicon-o-document-search')
->action('generatePost');

return $actions;
}
protected function getActions(): array
{
$actions[] = CreateAction::class::make();
$actions[] = Action::make('Generate')
->color('danger')
->requiresConfirmation()
->icon('heroicon-o-document-search')
->action('generatePost');

return $actions;
}
8 Replies
Patrick Boivin
Patrick Boivin12mo ago
I think this should work... are you running into any issues? Sorry, I went too fast... you need to add your actions in table(), like a regular resource
->headerActions([
// ...
])
->headerActions([
// ...
])
datarecall
datarecall12mo ago
ahh so that goes in the table part of it, let me give that a try how would you go about getting the ID of the category that is currently being viewed
Patrick Boivin
Patrick Boivin12mo ago
$this->ownerRecord
datarecall
datarecall12mo ago
that seemed to do the trick thank you @pboivin @pboivin one last question I have this action on My List Posts resource
protected function getActions(): array
{
$actions[] = CreateAction::class::make();
$actions[] = Action::make('Generate')
->color('danger')
->requiresConfirmation()
->icon('heroicon-o-document-search')
->form([
Select::make('categoryId')
->label('Category')
->options(Category::query()->pluck('name', 'id'))
->required(),
])
->action('generatePost');

return $actions;
}
public function generatePost($id): void
{
dd($id);
CreateBlogPostForCategory::dispatch($this->ownerRecord);
}
protected function getActions(): array
{
$actions[] = CreateAction::class::make();
$actions[] = Action::make('Generate')
->color('danger')
->requiresConfirmation()
->icon('heroicon-o-document-search')
->form([
Select::make('categoryId')
->label('Category')
->options(Category::query()->pluck('name', 'id'))
->required(),
])
->action('generatePost');

return $actions;
}
public function generatePost($id): void
{
dd($id);
CreateBlogPostForCategory::dispatch($this->ownerRecord);
}
How can I pass the id or model into the generate post method
Patrick Boivin
Patrick Boivin12mo ago
Which id are you thinking about? The record for the current page?
datarecall
datarecall12mo ago
This action has a form where they select the category, need to get the category ID into generatePost method
Patrick Boivin
Patrick Boivin12mo ago
Ah, I see! Something like this
->action(function ($data, $livewire) {
$livewire->generatePost($data['categoryId']);
})
->action(function ($data, $livewire) {
$livewire->generatePost($data['categoryId']);
})
datarecall
datarecall12mo ago
ahhh perfect thank you