Annotation de classe @display_order
-
Redirected from @display_order
/** * @display_order property_name_1, property_name_2, etc. */
Détermine dans quel ordre s’affichent les propriétés d’un objet dans des vues d’affichage et formulaires standard.
Par défaut, les propriétés s’affichent dans l’ordre de leur déclaration dans la classe. Cette annotation en fixe l’ordre vers quelque chose de mieux rangé d’un point de vue métier.
Exemple
/** * @display_order first_name, last_name, address */ class Address { /** * @multiline * @var string */ public $address; /** * @var string */ public $first_name; /** * @var string */ public $last_name; /** * @return string */ public function __toString() { return trim($this->first_name . SP . $this->last_name); } }
Sans utiliser
@display_order
, les champs seraient triés dans cet ordre dans les affichages et formulaires :- adresse
- prénom
- nomAvec cette déclaration, l’ordre sera :
- prénom
- nom
- adresseTri par défaut
On pourrait fixer l’ordre des propriétés en modifiant l’ordre de déclaration dans la classe, mais cet ordre est arbitraire, et ne doit pas avoir de sens métier. La méthode consacrée pour choisir l’ordre de tri des déclarations de propriétés dans une classe est de suivre l’ordre alphabétique, comme pour tout ce qui est arbitraire, de façon à faciliter la lecture du code.
Propriétés provenant de plusieurs parents et traits
Pour une classe dont les propriétés ont été déclarées dans plusieurs classes parentes / traits, l’ordre d’affichage des propriétés suivra un ordre arbitraire décidé par le framework, sur lequel il ne faut pas s’appuyer. La classe de plus haut niveau a donc intérêt à rappeler le
@display_order
des propriétés héritées et issues de composition de classe.Tri des propriétés pour une classe composée dynamiquement
Pour déterminer l’ordre de tri des propriétés pour des classes à laquelle sont adjoints de modules, votre module devra déclarer l’ordre de tri dans le fichier de configuration exhaustive.yaml, seul endroit où on peut lister exhaustivement des listes de propriétés recoupant des modules qui peuvent exister en toute indépendance les uns des autres, et qui ne doivent donc pas avoir connaissance les uns des autres.