- Classe :
AppoloDev\SFToolboxBundle\Form\DataTransformer\ArrayToStringTransformer - Fichier source :
src/Form/DataTransformer/ArrayToStringTransformer.php - Implémente :
Symfony\Component\Form\DataTransformerInterface
Transformer de formulaire convertissant un array en string avec une logique de valeurs par défaut prioritaires — utile pour un champ où certaines valeurs "spéciales" doivent primer sur les autres si elles sont présentes dans le tableau (ex: un statut "aucun" qui doit s'afficher seul même si d'autres valeurs sont sélectionnées en interne).
$defaultValues: liste de valeurs "prioritaires". Si l'une d'elles est présente dans le tableau à transformer, elle est retournée seule (voirtransform()).$multiple: détermine le comportement de secours quand aucune valeur par défaut n'est trouvée (voirtransform()).
Sens modèle → vue. Retourne null si $value n'est pas un array. Sinon :
- Si l'une des
$defaultValuesest présente dans$value, la retourne (la première trouvée, dans l'ordre de$defaultValues). - Sinon, si
$multipleestfalse: retourne le dernier élément du tableau (end($value)). - Sinon (
$multiple: true) : retourne tous les éléments joints par,.
$transformer = new ArrayToStringTransformer(['none'], multiple: true);
$transformer->transform(['a', 'none', 'b']); // "none" (valeur par défaut prioritaire)
$transformer->transform(['a', 'b']); // "a,b" (multiple: true, pas de défaut trouvé)Sens vue → modèle : si $value est une chaîne, retourne [$value] (mode simple) ou explode(',', $value) (mode $multiple). Sinon retourne [].
use AppoloDev\SFToolboxBundle\Form\DataTransformer\ArrayToStringTransformer;
// Un champ "visibilité" où choisir "privé" doit primer sur toute autre sélection :
$builder->get('visibility')->addModelTransformer(
new ArrayToStringTransformer(['private'], multiple: true)
);- StringToArrayTransformer — version simple, sans logique de priorité.