Je trouve que le plus gros problème avec Drupal 8 est que je ne peux pas obtenir les données dont j'ai besoin. Drupal 8 veut que j'utilise des méthodes publiques plutôt que d'explorer manuellement un objet. Le problème est que je n'arrive pas à trouver un moyen cohérent d'obtenir une liste des méthodes disponibles! (ils existent comme par magie, et j'ai l'impression que je suis juste censé les connaître). =
Pour cet exemple, disons que j'ai un type de contenu avec un champ vidéo. J'ai besoin d'obtenir l'URL brute du fichier vidéo dans ce champ.
Je commencerais donc par un identifiant de nœud ($ nid), et je dois en quelque sorte trouver comment charger le nœud. Ce n'est pas trop mal car il y a beaucoup d'exemples. Donc je fais quelque chose comme $node = \Drupal\node\Entity\Node::load($nid);
.
Jusqu'ici tout va bien. Ensuite, j'ai besoin d'obtenir la valeur de mon champ vidéo (field_main_video). Cela m'a pris POUR TOUJOURS à comprendre parce qu'il y a une documentation conflictuelle autour du net. Enfin, j'ai compris que je devrais faire quelque chose comme ça (car c'est un élément à plusieurs valeurs):
$video = \Drupal\node\Entity\Node::load($nid)->field_main_video->getValue();
... puis boucle à travers le tableau, etc. L'utilisation de kint ne m'a pas non plus aidé à trouver cela. Parce que, par exemple, si je kint($node)
regarde sous les méthodes, je ne vois pas getValue () comme un élément là-bas. Toujours pas terrible, car il y avait suffisamment d'exemples pour le comprendre.
En approfondissant, cependant, ce que je ne savais pas (c'est la partie importante), c'est que plutôt que d'obtenir l'ID d'entité du champ vidéo, puis de charger l'entité, puis de trouver le champ "uri" dans l'entité, etc. (comme Je le ferais en D7): Il y avait une méthode qui me permet d'obtenir l'URI tout dans cette même ligne de code!
$url = \Drupal\node\Entity\Node::load($nid)->field_main_video->entity->getFileUri();
Mais comment aurais-je pu savoir que cette getFileUri () existait? Il m'est arrivé de tomber dessus dans un article de blog. Cela rend vraiment l'obtention d'un URI plus facile qu'en D7 ... mais seulement si vous savez (comme par magie) quelles méthodes existent pour chaque «niveau» d'un objet.
En fin de compte, avec cet exemple, je demande: Comment trouvez-vous toutes les méthodes publiques pour chaque niveau d'un objet d'une manière facile à lire et à comprendre? Notez qu'il semble qu'il devrait y avoir une méthode centrée sur Drupal (c'est-à-dire un module de développement) plutôt que de rechercher manuellement api.drupal.org ou d'utiliser quelque chose d'IDE spécifique?