Comment afficher plusieurs Smart Fields d’un tableau dans une même colonne ?
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 réorganiser un tableau ?
On utilise l’option setTemplate pour définir le template à utiliser pour afficher la valeur du Smart Field, en
particulier d’afficher un tableau.
Recommandations
Si vous n’êtes pas familier avec le concept dOption de présentation, en particulier de l’option setTemplate, il est
recommandé de lire la documentation associée
disponible ici
Voici un exemple d’utilisation l’option setTemplate pour afficher plusieurs Smart Fields d’un tableau dans une même
colonne
<?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);
$options->arrayAttribute(MenuFields::menu_composition)
->setTemplate('
<table class="dcpArray__table"" rules="all" >
<thead>
<tr>
<th/>
<th class="dcpArray__head__cell" style="display: block; text-align: center">
{{attributes.menu_plat.label}} / {{attributes.menu_boisson.label}}
</th>
</tr>
</thead>
<tbody>
{{#attribute.rows}}
<tr>
{{#attribute.isWriteMode}}
<td>
{{{rowTools}}}
</td>
{{/attribute.isWriteMode}}
<td style="display: block; height: 100px">
<div style="margin: 5px">
{{{content.menu_plat.htmlContent}}}
</div>
<div style="margin: 5px">
{{{content.menu_boisson.htmlContent}}}
</div>
</td>
</tr>
{{/attribute.rows}}
</tbody>
</table>
<div>
{{#attribute.isWriteMode}}
{{{attribute.tableTools}}}
{{/attribute.isWriteMode}}
</div>
');
//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;
}
}
Le tableau du cadre Composition du menu sera affiché ainsi:

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 MENU en création ou modification :
http://localhost:8080/api/v2/smart-elements/MENU/views/!defaultCreation.html
Et ensuite ?
Comment cacher des Smart Fields dans les représentations de Smart Element