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

RenderDescriptionInterface

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>&lt;p&gt;Pourcentage de réduction&lt;/p&gt;</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:

resultat

Et voir le résultat sur un MENU en création ou modification :

http://localhost:8080/api/v2/smart-elements/MENU/views/!defaultCreation.html

Et ensuite ?

Comment personnaliser l’affichage d’un Smart Field