// In ProductResource
Section::make('Ek Bilgi Alanları')
->schema(fn(Get $get): array => self::getAdditionalFields($get('product_group_ids')))
->columns(2)
->statePath('additional_fields')
->dehydrated(true)
// getAdditionalFields method
protected static function getAdditionalFields(?array $productGroupIds): array
{
// ... get fields
return $additionalFields->map(function ($field) {
$fieldKey = Str::snake($field->value ?: $field->field_name);
$component = match ($field->field_type) {
'free-text' => TextInput::make("additional_fields.{$fieldKey}")
->label($field->value ?: $field->field_name)
->default(''),
};
return $component;
})->toArray();
Product Model
public function setAdditionalFieldsAttribute($value)
{
$this->attributes['additional_fields'] = is_array($value) ? json_encode($value) : $value;
}
public function getAdditionalFieldsAttribute($value)
{
return json_decode($value, true) ?? [];
}
}
// In ProductResource
Section::make('Ek Bilgi Alanları')
->schema(fn(Get $get): array => self::getAdditionalFields($get('product_group_ids')))
->columns(2)
->statePath('additional_fields')
->dehydrated(true)
// getAdditionalFields method
protected static function getAdditionalFields(?array $productGroupIds): array
{
// ... get fields
return $additionalFields->map(function ($field) {
$fieldKey = Str::snake($field->value ?: $field->field_name);
$component = match ($field->field_type) {
'free-text' => TextInput::make("additional_fields.{$fieldKey}")
->label($field->value ?: $field->field_name)
->default(''),
};
return $component;
})->toArray();
Product Model
public function setAdditionalFieldsAttribute($value)
{
$this->attributes['additional_fields'] = is_array($value) ? json_encode($value) : $value;
}
public function getAdditionalFieldsAttribute($value)
{
return json_decode($value, true) ?? [];
}
}