Comment rediriger vers une autre représentation après la sauvegarde ?
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement savoir Comment déclencher un code javascript lors de la sélection d’un menu spécifique ?.
Comment procéder ?
Dans notre exemple, nous allons faire basculer la vue d’édition vers la vue de consultation pour nos Smart Elements
PLAT
. La méthode fetchSmartElement
nous permettra de charger un Smart Element vers une vue spécifique.
Recommandations
Si vous n’êtes pas familier avec la méthode fetchSmartElement
, il est recommandé de lire la documentation associée
disponible ici
Nous allons ajouter un script JavaScript à la vue de modification des PLAT
. Créer le fichier src/public/platEdit.js
:
window.ank.smartElement.globalController.registerFunction("platEdit", (controller) => {
controller.addEventListener("ready", function addListeners(event, documentObject, data) {
controller.addEventListener("afterSave", function fetchConsultationView(
event,
currentSmartElement,
previousSmartElement
) {
controller.fetchSmartElement({
initid: currentSmartElement.initid,
viewId: "!defaultConsultation",
});
});
});
});
Ajouter ce script aux Smart Elements PLAT
en modifiant
src/vendor/Cogip/Restauratec/SmartStructures/Plat/Render/PlatEditRender.php
:
<?php
namespace Cogip\Restauratec\SmartStructures\Plat\Render;
use Anakeen\Ui\CommonRenderOptions;
use Anakeen\Ui\EnumRenderOptions;
use Anakeen\Ui\FrameRenderOptions;
use Anakeen\Ui\RenderOptions;
use Cogip\Restauratec\SmartStructures\Consommable\Render\ConsommableEditRender;
use SmartStructure\Fields\Plat as PlatFields;
class PlatEditRender extends ConsommableEditRender
{
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);
$options->frame(PlatFields::consommable_frame) ->setResponsiveColumns(
array(
[
"number" => 2,
"minWidth" => "60rem",
"maxWidth" => "100rem",
"direction" => FrameRenderOptions::topBottomDirection
],
[
"number" => 3,
"minWidth" => "100rem",
"maxWidth" => "140rem",
"direction" => FrameRenderOptions::topBottomDirection],
[
"number" => 4,
"minWidth" => "140rem",
"maxWidth" => "160rem",
"direction" => FrameRenderOptions::topBottomDirection],
[
"number" => 5,
"minWidth" => "160rem",
"direction" => FrameRenderOptions::topBottomDirection],
)
);
return $options;
}
public function getJsReferences(\Anakeen\Core\Internal\SmartElement $document = null)
{
$jsRefs = parent::getJsReferences($document);
$jsRefs['platEdit'] = new \Anakeen\Ui\JsAssetReference("/platEdit.js");
return $jsRefs;
}
}
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
Et ensuite ?
Comment préremplir des Smart Fields lors de l’affichage du formulaire ?