Les conventions utilisées dans les templates PHP (PHTML) de Magento 2

  • $this no longer applies to the rendering block. Use $block or $block>getData('view_model') to obtain access to the instigating object or its data.
  • Always type hint variables that are automatically imported ($block, $viewModel).
  • Never use squiggly braces: this is a code smell that indicates your block or view model should be doing more work.
  • If you need to use a loop, use the foreach > endforeach constructs (de cette manière: <?php foreach () : ?> puis <?php endforeach ?>).
  • Keep templates to a reasonable minimum. Massive 500 line files are a code smell.
  • Magento now uses <?= instead of <?php echo.
  • Always translate strings in templates that will be displayed to user.
  • Magento templates do not use the if(){ /* … */ } constructs because squiggly braces are harder to discern amongst HTML. A la place, utiliser <?php if (): ?> suivi de <?php else: ?> ou directement de <?php endif; ?>.

Les méthodes communément disponibles pour la variable $block

  • getRootDirectory()
  • getMediaDirectory()
  • getUrl()
  • getBaseUrl()
  • getChildBlock($alias)
  • getChildHtml($alias, $useCache = true)
  • getChildChildHtml($alias, $childChildAlias = '', $useCache = true): this method returns the HTML from a grandchild block.
  • getChildData($alias, $key = ''): calls getData on a child block.
  • formatDate($date = null, $format = \ IntlDateFormatter::SHORT, $showTime = false, $timezone = null)
  • formatTime($time = null, $format = \ IntlDateFormatter::SHORT, $showDate = false)
  • getModuleName()
  • escapeHtml($data, $allowedTags = null)
  • escapeJs($string)
  • escapeHtmlAttr($string, $escapeSingleQuote = true)
  • escapeCss($string)
  • stripTags($data, $allowableTags = null, $allowHtmlEntries = false)
  • escapeUrl($string)
  • getVar($name, $module = null): locates a value from the theme’s etc/view.xml

Comment afficher un child block?

Comment afficher tous les child block?

Afficher un argument défini via un layout XML

Source: Magento 2: Adding Frontend Assets via Layout XML (Alan Storm)

La valeur de test_value sera disponible via $block->getData('test_value') ou $block->getTestValue().

Rendu sécurisé des templates, contenus HTML / JS et Urls

  • HTML: $block->escapeHtml(‘value’, $allowedTags);
  • HTML attributes: $block->escapeHtmlAttr(‘value’, $escapeSingleQuote);
  • JavaScript: $block->escapeJs(‘value’);
  • URLs: $block->escapeUrl($url);

Si la condition d’un booléen est true, afficher quelque chose…

Nous avons créé un attribut produit custom que nous avons nommé best_offer. Il s’agit d’un booléen. Nous allons commencer par stocker sa valeur dans une variable $bestOffer:

Puis, lorsque nous avons besoin d’afficher quelque chose de spécifique si la valeur de la variable $bestOffer est true (attribut configuré à oui en back-office):

Fonction PHP de gestion des variables empty()

Source: Fonctions de gestion des variables: empty().

Nous avons créé un attribut produit custom que nous avons nommé offer_content. Il s’agit d’un champ texte. Nous allons commencer par stocker sa valeur dans une variable $offerContent:

Puis, si la variable ne vaut pas 0, n’est pas vide, est définie, afficher sa valeur:

Utitiser la fonction PHP strst() pour supprimer une partie d’une chaîne de caractères jusqu’à un caractère spécifié

Ici, pour la chaîne de caractère toto-titi, je veux conserver -titi uniquement:

Utitiser la fonction PHP str_replace() pour supprimer un caractère spécifié

Ici, pour la chaîne de caractère -titi, je veux retirer le caractère - pour conserver titi uniquement: