4.5.8 getCustomServerData
La méthode getCustomServerData
définit des données supplémentaires
transmises au client web.
Ces données peuvent ensuite être utilisées sans contrainte par le client
au moyen de la méthode getServerCustomData
du widget javascript.
/** * Defined some data to be used by client * @param \Doc $document current document to render * @return mixed */ public function getCustomServerData(\Doc $document);
Les données retournées sont converties en json lors de l'envoi.
Si la donnée est un objet PHP, il est préférable d'implémenter l'interface JsonSerializable pour maîtriser son encodage.
4.5.8.1 Exemple
Le document a un paramètre de type color
. Le rendu utilise la valeur pour
changer le fond de la de la page.
La classe de rendu, définit les données à envoyer et le traitement javascript à utiliser pour traiter ces données complémentaires.
class RepaintRenderConfigView extends \Dcp\Ui\DefaultView { public function getCustomServerData(\Doc $document) { return array( "repaintColor", $document->getFamilyParameterValue("my_color"), "textColor" => $document->getFamilyParameterValue("my_textColor") ); } public function getJsReferences(\Doc $document=null) { $js=parent::getJsReferences($document); $js["customRepaint"]="MY/Layout/customRepaint.js"; return $js; } }
Sur le client, les données sont récupérées sur le "ready".
MY/Layout/customRepaint.js
window.dcp.document.documentController( "addEventListener", "ready", { "name": "my.custom", "documentCheck": function (documentObject) { return documentObject.family.name === "MY_FAMILY" } }, function (event, documentObject, data) { var myData=this.documentController("getCustomServerData"); if (myData && myData.repaintColor) { $("body").css("background-color", myData.repaintColor); } } );