// form
foreach (Language::all() as $language) {
$fields[] = Forms\Components\Tabs\Tab::make('translations.'.$language->id)
->label($language->name)
->schema([
Forms\Components\TextInput::make('translations.'.$language->id.'.plan_name')
->required(),
Forms\Components\Repeater::make('translations.'.$language->id.'.features')
->simple(
Forms\Components\TextInput::make('translations.'.$language->id.'.features')
->required(),
)
]);
}
// create (working fine)
Actions\CreateAction::make()
->after(function (Model $record, array $data) {
foreach ($data['translations'] as $key => $value) {
$record->translations()->create([
'language_id' => $key,
'plan_name' => $value['plan_name'],
'features' => $value['features'],
]);
}
}),
// edit (it cannot fill repeater data)
Tables\Actions\EditAction::make()
->mutateRecordDataUsing(function (Model $record, array $data): array {
foreach ($record?->translations as $translation) {
$data['translations'][$translation->language_id]['plan_name'] = $translation->plan_name;
$data['translations'][$translation->language_id]['features'] = $translation->features;
}
// dd($data);
return $data;
}),
// relationship
public function translations(): HasMany
{
return $this->hasMany(ProductTranslation::class);
}
// form
foreach (Language::all() as $language) {
$fields[] = Forms\Components\Tabs\Tab::make('translations.'.$language->id)
->label($language->name)
->schema([
Forms\Components\TextInput::make('translations.'.$language->id.'.plan_name')
->required(),
Forms\Components\Repeater::make('translations.'.$language->id.'.features')
->simple(
Forms\Components\TextInput::make('translations.'.$language->id.'.features')
->required(),
)
]);
}
// create (working fine)
Actions\CreateAction::make()
->after(function (Model $record, array $data) {
foreach ($data['translations'] as $key => $value) {
$record->translations()->create([
'language_id' => $key,
'plan_name' => $value['plan_name'],
'features' => $value['features'],
]);
}
}),
// edit (it cannot fill repeater data)
Tables\Actions\EditAction::make()
->mutateRecordDataUsing(function (Model $record, array $data): array {
foreach ($record?->translations as $translation) {
$data['translations'][$translation->language_id]['plan_name'] = $translation->plan_name;
$data['translations'][$translation->language_id]['features'] = $translation->features;
}
// dd($data);
return $data;
}),
// relationship
public function translations(): HasMany
{
return $this->hasMany(ProductTranslation::class);
}