Comment modifier l’aspect d’un Smart Field à l’aide d’une option de représentation

Prérequis

Afin de pouvoir suivre ce guide, il faut préalablement avoir géré les rendus du Smart Element.

Comment procéder ?

Comment associer une classe de rendu à une smart structure ?

Recommandations

Si vous n’êtes pas familier avec les concepts que sont les Classes de rendu ainsi que leur fonctionnement, il est fortement recommandé de lire la documentation associée disponible ici

Au cours des étapes précédentes nous avons déjà généré pour la Smart Structure PLAT :

  • Une classe PlatAccess qui définit les classes de rendu pour chaque mode :
<?php

namespace Cogip\Restauratec\SmartStructures\Plat\Render;

class PlatAccess implements \Anakeen\Ui\IRenderConfigAccess
{
    /**
     * Choose good render from view or edit mode
     * @param string $mode
     * @param \Anakeen\Core\Internal\SmartElement $element
     * @return \Anakeen\Ui\IRenderConfig
     */
    public function getRenderConfig($mode, \Anakeen\Core\Internal\SmartElement $element)
    {
        switch ($mode) {
            case \Anakeen\Ui\RenderConfigManager::CreateMode:
            case \Anakeen\Ui\RenderConfigManager::EditMode:
                return new PlatEditRender();
            case \Anakeen\Ui\RenderConfigManager::ViewMode:
                return new PlatViewRender();
        }
        return null;
    }
}
  • Les classes de rendu associées PlatEditRender et PlatViewRender

La classePlatAccess est déjà liée à la structure PLAT grâce au fichier 500-PlatSettings.xml :







 
 
 

















<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0">
    <!-- Ce fichier permet de lier votre Smart Structure avec vos "profil", "Field access layer" -->
    <!-- Lien vers le guide How To : Voir les guides sur les "profile", "Field access layer", "mask" pour voir comment configurer ce fichier -->
    <!-- Lien vers le manuel de référence : Pareil que les guides -->

    <ui:render ref="PLAT">
        <ui:render-access class="Cogip\Restauratec\SmartStructures\Plat\Render\PlatAccess"/>
    </ui:render>

    <smart:structure-configuration name="PLAT">
        <smart:accesses>
            <!-- Référence le profil de structure (type PFAM) -->
            <smart:structure-access-configuration ref="STRUCTURE_PLAT_PROFILE" />
            <!-- Référence le profil standard (PDOC) -->
            <smart:element-access-configuration ref="ELEMENT_PLAT_PROFILE"/>
            <smart:field-access-configuration ref="FALL_PLAT"/>
        </smart:accesses>
    </smart:structure-configuration>

    <ui:render ref="PLAT">
        <ui:view-control ref="CVDOC_PLAT"/>
    </ui:render>

</smart:config>

Comment modifier les options de présentation des Smart Fields ?

Recommandations

Si vous n’êtes pas familier avec le concept dOption de présentation ainsi que son fonctionnement, il est fortement recommandé de lire la documentation associée disponible ici

Une fois lié les classes de rendu à la structure on peut rajouter les options de présentation que l’on souhaite.

Surchargeons la méthode getOptions de la classe de rendu d’édition des plats PlatEditRender pour :

  • Afficher un énuméré bouton pour le Smart Field plat_type
  • Placer les libellés de chaque Smart Field à gauche











 
 
 
 
 
 
 


<?php

namespace Cogip\Restauratec\SmartStructures\Plat\Render;

use Anakeen\Ui\CommonRenderOptions;
use Anakeen\Ui\EnumRenderOptions;
use Anakeen\Ui\RenderOptions;
use SmartStructure\Fields\Plat as PlatFields;

class PlatEditRender extends \Anakeen\Ui\DefaultConfigEditRender
{
    public function getOptions(\Anakeen\Core\Internal\SmartElement $document): RenderOptions
    {
        $options = parent::getOptions($document);
        $options->enum(PlatFields::plat_type)->setDisplay(EnumRenderOptions::horizontalDisplay);
        $options->commonOption()->setLabelPosition(CommonRenderOptions::leftPosition);
        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

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

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

PLAT Modify Render Options

Et ensuite :

Comment rendre responsive les Smart Fields d’un cadre