Comment paramétrer une description complète d’un formulaire par défaut ?
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement savoir Comment créer une Smart Structure.
Qu’est-ce que la Smart Structure RenderDescription ?
Recommandations
Pour plus de détails, il est recommandé de lire la documentation associée disponible ici
Il existe deux moyens de créer un Smart Element RenderDescription :
- Depuis le centre d’administration
- En important un fichier XML
Comment créer un Smart Element RenderDescription depuis le centre d’administration
En tant qu’administrateur, il est possible de créer, modifier ou consulter les Smart Element de type RenderDescription
en allant sur http://localhost:8080/admin/descriptions/
Recommandations
Si vous n’êtes pas familier avec l’interface de gestion des descriptions, il est recommandé de lire la documentation associée disponible ici
Voici un exemple de création d’un Smart Element de type RenderDescription en passant par le centre d’administration
Comment créer un Smart Element RenderDescription depuis un fichier XML
Le second moyen est d’importer le Smart Element depuis un fichier XML.
Paramétrer une description dans le fichier :src/vendor/Cogip/Restauratec/Descriptions/400-MenuDescription.xml
<?xml version="1.0" encoding="UTF-8"?>
<documents date="2018-12-11T14:42:17" author="Dynacase Platform Master" name="Description for menu">
<renderdescription xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" title="Menu_discount_description" revision="0" modification-date="2021-08-16 13:19:33.15037" version="" state="">
<rd_title>Menu_discount_description_1</rd_title>
<rd_famid name="MENU">Menu</rd_famid>
<rd_mode>{view,edit}</rd_mode>
<rd_lang>fr</rd_lang>
<rd_example>Menu enfant</rd_example>
<rd_t_fields>
<rd_fieldparentlabel>Informations relatives au menu/</rd_fieldparentlabel>
<rd_fieldlabel>Remise applicable (%)</rd_fieldlabel>
<rd_field>menu_discount</rd_field>
<rd_description><p>Pourcentage de réduction</p></rd_description>
<rd_subdescription xsi:nil="true"/>
<rd_collapsable>true</rd_collapsable>
<rd_placement>top</rd_placement>
</rd_t_fields>
</renderdescription>
</documents>
Attention
L’exemple s’appuie sur le menu Menu enfant
. S’il n’est pas créé sur votre projet, vous pouvez vous baser sur un menu
différent.
On ajoute les instructions d’import du fichier XML dans le fichier info.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<module xmlns="https://platform.anakeen.com/4/schemas/app/1.0" name="Restauratec" vendor="Cogip" version="1.0.0">
<requires>
<module name="smart-data-engine" version="^6.0.0-rc.2021.1.1.2"/>
<module name="business-app" version="^3.0.0-rc.2021.1.1.2"/>
</requires>
<post-install>
<process command="./ank.php --script=registerConfigDir --path=./vendor/Cogip/Restauratec/Config"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/Accounts/**/*.xml"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/Enumerates/**/*.xml"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/SmartStructures/Consommable/**/*.xml"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/SmartStructures/Menu/**/*.xml"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/SmartStructures/Boisson/**/*.xml"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/SmartStructures/Plat/**/*.xml"/>
<process command="./ank.php --script=importConfiguration --file=./vendor/Cogip/Restauratec/250-MailTemplateMailMonPremierModele.xml"/>
<process command="./ank.php --script=importConfiguration --file=./vendor/Cogip/Restauratec/SmartStructures/DataEntree.xml"/>
<process command="./ank.php --script=importConfiguration --file=./vendor/Cogip/Restauratec/SmartStructures/DataPlat.xml"/>
<process command="./ank.php --script=importConfiguration --file=./vendor/Cogip/Restauratec/SmartStructures/DataDessert.xml"/>
<process command="./ank.php --script=importConfiguration --file=./vendor/Cogip/Restauratec/SmartStructures/DataBoisson.xml"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/hub_export/**/*.xml" />
<process command="./ank.php --script=importDocuments --file=./vendor/Cogip/Restauratec/Descriptions/400-MenuDescription.xml"/>
</post-install>
<post-upgrade>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/Accounts/**/*.xml"/>
<process command="./ank.php --script=importConfiguration --glob=./vendor/Cogip/Restauratec/Enumerates/**/*.xml"/>
</post-upgrade>
</module>
Recommandations
Si vous n’êtes pas familier avec le rôle du fichier info.xml, il est recommandé de lire la documentation associée disponible ici
Comment utiliser un Smart Element RenderDescription?
Une description de formulaire est pris en compte par défaut si son champ rd_mode ("Utilisé par défaut dans le mode") est
renseigné dans le fichier XML (400-MenuDescription.xml). S'il est vide, il ne sera pas pris en compte par défaut. Dans
ce cas, il est possible de contrôler par programmation la description de formulaire à utiliser. On utilise la function
applyRenderDescription
pour appliquer le smart Element de type RenderDescription
<?php
namespace Cogip\Restauratec\SmartStructures\Menu\Render;
use Anakeen\Ui\CommonRenderOptions;
use Anakeen\Ui\RenderOptions;
use SmartStructure\Fields\Menu as MenuFields;
use \Anakeen\Core\Internal\SmartElement;
use SmartStructure\Renderdescription;
class MenuEditRender extends \Anakeen\Ui\DefaultConfigEditRender
{
public function getOptions(\Anakeen\Core\Internal\SmartElement $document): RenderOptions
{
$options = parent::getOptions($document);
//Mis en place des descriptions par la function setDescription
$options->frame(MenuFields::menu_frame)
->setDescription("<p>Une proposiion de repas pour client</p>",
CommonRenderOptions::topPosition);
$options->arrayAttribute(MenuFields::menu_composition)
->setDescription("<p>La liste des divers mets qui composent le repas</p>",
CommonRenderOptions::bottomPosition);
$options->text(MenuFields::menu_title)
->setDescription("<p>Le nom d’un menu</p>",
CommonRenderOptions::clickPosition);
//Mis en place des descriptions par le Smart Element Menu_discount_description_1
/** @var Renderdescription $menuDescriptions */
$menuDescriptions = \Anakeen\Core\SEManager::getDocument("Menu_discount_description_3");
if ($menuDescriptions) {
$this->applyRenderDescription($menuDescriptions, $options);
}
return $options;
}
}
Vous pouvez maintenant déployer vos modifications :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
Le résultat sera:
Et voir le résultat sur un MENU en création ou modification :
http://localhost:8080/api/v2/smart-elements/MENU/views/!defaultCreation.html