Filament v2 - $this->record doesn't exist when using a simple resource

Title pretty much says it all, I'm exploring Filament v2 and trying to make a simple modal that creates a user, manipulates the password to be a random string, and then fires an email once saved. When I used this code on a normal resource, everything worked fine. However, when using a simple resource, I keep getting a "Property [$record] not found on component: [app.filament.resources.user-resource.pages.manage-users]" error. The code in my ManageUser.php file is as follows:
<?php

namespace App\Filament\Resources\UserResource\Pages;

use Filament\Pages\Actions;
...

class ManageUsers extends ManageRecords
{
protected static string $resource = UserResource::class;

protected function getActions(): array
{
return [
CreateAction::make()
->mutateFormDataUsing(function (array $data): array {
$data['password'] = Hash::make(Str::random(30));

return $data;
})
->after(function(array $data) {
dd($this->record);
$token = Str::random(35);

DB::table('password_reset_tokens')->insert([
'email' => $this->record->email,
'token' => bcrypt($token),
'created_at' => now(),
]);

event(new Registered($this->record));
$this->record->notify(new ResetPassword($token));
})
];
}
}
<?php

namespace App\Filament\Resources\UserResource\Pages;

use Filament\Pages\Actions;
...

class ManageUsers extends ManageRecords
{
protected static string $resource = UserResource::class;

protected function getActions(): array
{
return [
CreateAction::make()
->mutateFormDataUsing(function (array $data): array {
$data['password'] = Hash::make(Str::random(30));

return $data;
})
->after(function(array $data) {
dd($this->record);
$token = Str::random(35);

DB::table('password_reset_tokens')->insert([
'email' => $this->record->email,
'token' => bcrypt($token),
'created_at' => now(),
]);

event(new Registered($this->record));
$this->record->notify(new ResetPassword($token));
})
];
}
}
I'm a bit lost as to what the issue is, have I missed a step, or misundertood something?
Solution:
I think you can inject the $record parameter into after: ```php ->after(function ($record) { // ... })...
Jump to solution
2 Replies
Solution
Patrick Boivin
Patrick Boivin17mo ago
I think you can inject the $record parameter into after:
->after(function ($record) {
// ...
})
->after(function ($record) {
// ...
})
andy_holmes
andy_holmesOP17mo ago
Ahhhh that's it! I knew it would be simple, thank you @pboivin
Want results from more Discord servers?
Add your server