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