hi,
i have two fields
Forms\Components\Select::make('account_id')->options((new ExpenseService())->getAccounts())->placeholder('Please select a debit account'),
Forms\Components\Hidden::make('name')->default(), how can i use llive() on account so what ever the account is, the name defuault column gets updated with it
Forms\Components\Hidden::make('name')->default(), how can i use llive() on account so what ever the account is, the name defuault column gets updated with it
9 Replies
yes i want when account_id fields is selected , its name should be assigned as default in name field @Shaung Bhone
You need to read doc first
yes on it
Instead of using a hidden field I guess it might be better to use the
mutateDataBeforeCreate()
hook and pull the data via the id from the DB there. Hidden fields are on the client side and can be manipulatedi am doing this already
protected function mutateFormDataBeforeCreate(array $data): array
{
$data = $this->data;
$data has my data and within it there is a array . when im updating , it doesnt fetches the array from $data and im unable to update those fields . SO for now i am updating it on default in the form . @Dennis Koch
so this is the reason i want that the form name should be set as defualt account_id name
@Dennis Koch
What do you mean „it doesn’t fetch the array from $data“?
If you want to make changes you need to change that array and return it.
You put that method on the CreatePage?
dd($data) showing
array:3 [▼ // app/Filament/Resources/ExpenseResource/Pages/CreateExpense.php:27
"name" => "Laurel Conner"
"description" => "Veritatis velit lau"
"voucherDetails" => array:1 [▶]
]
you see i have array vcoucherDetilas in it but when i update record in mutate function
foreach ($data['voucherDetails'] as &$voucherDetail) {
$voucherDetail = array_merge($voucherDetail, [
'account_id' => $account,
'voucherable_type' => Account::class,
'created_by' => Auth::id(),
'voucherable_id' => $account,
'quantity' => 1,
]);
}
its not updating the data in voucherDetail. so for now i was setting default values based on account_id for name . The rest i have set to default
@Dennis Koch
its was giving eror no default value for etc . coz it was going null so the value i want im storing it in default for now .
now can you help ? @Dennis Koch
I don't know whether pass by reference works here with array data.
foreach ($data['voucherDetails'] as &$voucherDetail) {
Did you verify the modified data at the end of the method?
Also please look at #✅┊rules on how to format code. It's hard to read your messages otherwise.