create-form-tab-layoutlisted
Install: claude install-skill jeffsenso/prestashop-skills
# create-form-tab-layout
> **This is NOT the default form pattern.** Most entity forms are simple single-page forms
> using `TranslatorAwareType` or `AbstractType`. Only use `NavigationTabType` when the entity
> has many fields that benefit from tab organization (e.g. Carrier with general, shipping,
> size/weight tabs).
## Instructions
1. In root `{Domain}Type`, declare `NavigationTabType` as the parent type via `getParent()`:
```php
public function getParent(): string
{
return NavigationTabType::class;
}
```
Then in `buildForm()`, add each tab as a sub-form — each child is rendered as a tab.
2. Create one form type per tab: `{Domain}GeneralTabType.php`, `{Domain}ShippingTabType.php`, etc.
3. Each tab type extends `TranslatorAwareType` with its own `buildForm()` containing only that tab's fields.
4. Tab anchor IDs (used for JS error scrolling) are derived from the tab names.
**Reference:** `src/PrestaShopBundle/Form/Admin/Shipping/Carrier/CarrierType.php`, `src/PrestaShopBundle/Form/Admin/Sell/Product/EditProductFormType.php`
## Rules
Conventions (NavigationTabType is PS-specific, tab anchor IDs for JS error nav) are in [Forms/CONTEXT.md](../../CONTEXT.md). Skill-specific reminders:
- Each tab gets its own form type class for maintainability
- Tab titles must use `$this->trans()` for translation