en un clic
add-form
Add an admin FormType for an existing Sylius Resource
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
Add an admin FormType for an existing Sylius Resource
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
Implement the fix described in a GitHub issue and open a Pull Request that closes it
Apply the latest review feedback to a Pull Request and push it to the PR branch
Add an admin autocomplete form type for a Sylius Resource (translatable or not), optionally injected into another form via an extension
Add an admin FormType for an existing Sylius Resource
Add a Sylius admin grid for an existing Sylius Resource
Add a multiple images collection (OneToMany) to an existing Sylius Resource
| name | add-form |
| description | Add an admin FormType for an existing Sylius Resource |
| argument-hint | [ModelName] |
| allowed-tools | AskUserQuestion, Bash, Read, Edit, Write, Glob, Grep |
Ask the user for the ModelName if not provided. Read src/**/Entity/{ModelName}/{ModelName}.php to detect the entity's fields.
Prerequisite: the model must already exist as a Sylius Resource (run /sylius-plugin:add-model first).
src/Form/Type/{ModelName}/{ModelName}Type.php:
<?php
declare(strict_types=1);
namespace $SYLIUS_NAMESPACE\Form\Type\{ModelName};
use Sylius\Bundle\ResourceBundle\Form\Type\AbstractResourceType;
use Symfony\Component\Form\FormBuilderInterface;
final class {ModelName}Type extends AbstractResourceType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
// add fields based on the entity properties
;
}
public function getBlockPrefix(): string
{
return '${SYLIUS_PREFIX}_{model_snake}';
}
}
Read the entity fields and add the appropriate Symfony form types for each one (e.g. TextType, TextareaType, IntegerType, CheckboxType, etc.). Label each field with ${SYLIUS_PREFIX}.form.{model_snake}.{field}:
$builder
->add('name', TextType::class, [
'label' => '${SYLIUS_PREFIX}.form.{model_snake}.name',
])
->add('enabled', CheckboxType::class, [
'label' => '${SYLIUS_PREFIX}.form.{model_snake}.enabled',
])
;
Add to config/services.yaml:
services:
${SYLIUS_PREFIX}.form.type.{model_snake}:
class: $SYLIUS_NAMESPACE\Form\Type\{ModelName}\{ModelName}Type
arguments:
- '%${SYLIUS_PREFIX}.model.{model_snake}.class%'
- ['sylius']
tags:
- { name: form.type }
Edit config/resources/{model_snake}.yaml at the plugin root (the file created by /sylius-plugin:add-model). Add form: under the existing classes::
sylius_resource:
resources:
${SYLIUS_PREFIX}.{model_snake}:
driver: doctrine/orm
classes:
model: $SYLIUS_NAMESPACE\Entity\{ModelName}\{ModelName}
interface: $SYLIUS_NAMESPACE\Entity\{ModelName}\{ModelName}Interface
form: $SYLIUS_NAMESPACE\Form\Type\{ModelName}\{ModelName}Type
Get the project's default locale:
vendor/bin/console debug:container --parameter=kernel.default_locale
Add labels to translations/messages.{locale}.yaml under ${SYLIUS_PREFIX}.form.{model_snake}.{field} (one entry per field declared in the FormType):
${SYLIUS_PREFIX}:
form:
{model_snake}:
name: Name
enabled: Enabled
# one entry per field
vendor/bin/console cache:clear
vendor/bin/console debug:form "$SYLIUS_NAMESPACE\Form\Type\{ModelName}\{ModelName}Type" lists the declared fieldsvendor/bin/console debug:translation {locale} --domain=messages 2>&1 | grep '${SYLIUS_PREFIX}.form.{model_snake}' lists every field label you added./sylius-plugin:add-grid to add the admin index grid/sylius-plugin:add-routes and /sylius-plugin:add-menu to wire it into the admin/sylius-plugin:add-images if the model needs an images collection/sylius-plugin:add-autocomplete to expose the model as a searchable field in another form