- Si la condition d’un booléen est
true
, afficher quelque chose… - Fonction PHP de gestion des variables
empty()
- Utitiser la fonction PHP
strst()
pour supprimer une partie d’une chaîne de caractères jusqu’à un caractère spécifié - Utitiser la fonction PHP
str_replace()
pour supprimer un caractère spécifié
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?
1 |
$block->getChildHtml('child-name'); |
Comment afficher tous les child block?
1 |
$block->getChildHtml(); |
Afficher un argument défini via un layout XML
Source: Magento 2: Adding Frontend Assets via Layout XML (Alan Storm)
1 2 3 4 5 |
<referenceBlock name="product.info.sku"> <arguments> <argument name="test_value" xsi:type="string">11111</argument> </arguments> </referenceBlock> |
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
:
1 |
$bestOffer = $_product->getData('best_offer'); |
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):
1 2 3 |
<?php if ($bestOffer) :?> <h1>this is the best offer</h1> <?php endif; ?> |
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
:
1 |
$offerContent = $_product->getData('offer_content'); |
Puis, si la variable ne vaut pas 0, n’est pas vide, est définie, afficher sa valeur:
1 2 3 |
<?php if (!empty($offerContent)) :?> <p class="plan-type"><?php echo $offerContent ?></p> <?php endif; ?> |
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:
1 2 3 |
<?php strstr('toto-titi, '-'); ?> |
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:
1 2 3 |
<?php str_replace("-", "", "-titi"); ?> |