*/ final class FormFieldOptionFactory extends Factory { protected $model = FormFieldOption::class; /** @return array */ public function definition(): array { $value = $this->faker->unique()->slug(2); return [ 'owner_type' => 'form_field', 'owner_id' => FormField::factory(), 'value' => $value, 'label' => ucfirst(str_replace('-', ' ', $value)), 'sort_order' => 0, 'translations' => null, ]; } public function forField(FormField $field): static { return $this->state(fn () => [ 'owner_type' => 'form_field', 'owner_id' => $field->id, ]); } public function forLibrary(FormFieldLibrary $library): static { return $this->state(fn () => [ 'owner_type' => 'form_field_library', 'owner_id' => $library->id, ]); } /** * @param list $locales */ public function withTranslations(array $locales = ['en', 'de']): static { return $this->state(function (array $attributes) use ($locales) { $base = (string) ($attributes['label'] ?? 'Option'); $bag = []; foreach ($locales as $locale) { $bag[$locale] = $base.' ('.$locale.')'; } return ['translations' => $bag]; }); } }