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:

SetTemplateArray

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