Comment ajouter des messages en provenance du serveur lors d’une consultation ?
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement savoir Comment modifier l’aspect d’un Smart Field à l’aide d’une option de représentation.
Comment ajouter des messages en provenance du serveur lors d’une consultation ?
La méthode getMessages
permet d’afficher des messages pour un Smart Element depuis le serveur.
Pour écrire un message variable, il est nécessaire de prendre en compte la valeur de ce message dans le calcul de l’etag
afin de pouvoir observer la modification du message sur le navigateur. La méthode getEtag
permet de modifier la valeur
de l’etag pour la requête qui délivre les données du Smart Element.
Recommandations
Si vous n’êtes pas familier avec le concept de ETag
, il est fortement recommandé de lire la documentation associée
disponible ici
Si vous n’êtes pas familier avec les méthodes getMessages
et getEtag
, il est recommandé de lire les documentations
associées disponibles
ici et
ici
Modifier le fichier MenuViewRender.php
:
<?php
namespace Cogip\Restauratec\SmartStructures\Menu\Render;
use Anakeen\Core\Internal\SmartElement;
use Anakeen\Routes\Core\Lib\ApiMessage;
use Anakeen\Ui\RenderOptions;
use SmartStructure\Fields\Menu as MenuFields;
class MenuViewRender extends \Anakeen\Ui\DefaultConfigViewRender
{
public function getOptions(SmartElement $document): RenderOptions
{
$options = parent::getOptions($document);
$options->text(MenuFields::menu_title)->setTemplate('<div class="restauratec-custom-menu-title" style="display:flex"><i class="fa fa-book" aria-hidden="true" style="margin-right:10px"></i>{{{attribute.htmlDefaultContent}}}</div>');
$options->frame(MenuFields::menu_frame)->setTemplate('<div class="restauratec-custom-menu-frame" style="text-align: center">{{{attribute.htmlDefaultContent}}}</div>');
return $options;
}
/**
* @param SmartElement $document
* @return string
*/
public function getEtag(SmartElement $document): string
{
$eTag = parent::getEtag($document);
$eTag .= serialize($this->getMessages($document));
return $eTag;
}
/**
* @param SmartElement $document
* @return array
*/
public function getMessages(\Anakeen\Core\Internal\SmartElement $document): array
{
$messages = parent::getMessages($document);
$messages[] = new ApiMessage(
sprintf("Time : %d", time()),
ApiMessage::SUCCESS
);
return $messages;
}
}
On met à jour ici la valeur par défaut de l’eTag en lui ajoutant une sérialisation des messages qui inclus un horodatage
différent à chaque seconde : l’eTag sera donc différent à chaque appel de la fonction getMessages
.
Vous pouvez maintenant déployer vos modifications :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
Et voir le résultat en comparant le nombre du message qui devrait changer à chaque rafraichissement d’un rendu de consultation d’un MENU :
Et ensuite ?
Comment ajouter un menu permettant d’accéder à une url spécifique ?