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
etPlatViewRender
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