Étiquette : :empty

[Magento 2] PHP dans les fichiers PHTML

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:

[CSS][jQuery] Supprimer tous les éléments vides ou qui contiennent uniquement un espace insécable  

Supprimer tous les éléments vides à l’aide de la pseudo-classe CSS :empty

Note : Avant de mettre en place un nettoyage du DOM via JS, préférer une solution full-CSS avec la pseudo-classe :empty.
Source : :empty sur CSS Tricks.

Fonctionnera avec le markup HTML suivant

Ne fonctionnera pas avec le markup HTML suivant

Pour les cas qui ne fonctionnent pas, supprimer les éléments vides qui contiennent un espace insécable à l’aide de jQuery

Source : Remove elements with only a   space using jQuery

Le fragment de code suivant trouve l’ensemble des <div /> qui sont vides et les supprime du DOM.