# 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 \Anakeen\Core\Internal\SmartElement $document current Smart Element to render
* @return mixed
*/
public function getCustomServerData(\Anakeen\Core\Internal\SmartElement $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.
# Exemple
Le Smart Element a un paramètre de type color
. Le rendu utilise la valeur pour changer le fond 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 \Anakeen\Ui\DefaultView
{
public function getCustomServerData(\Anakeen\Core\Internal\SmartElement $document)
{
return array(
"repaintColor",
$document->getFamilyParameterValue("my_color"),
"textColor" => $document->getFamilyParameterValue("my_textColor")
);
}
public function getJsReferences(\Anakeen\Core\Internal\SmartElement $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
import ankSmartController from "@anakeen/user-interfaces/components/lib/AnkController";
ankSmartController.registerFunction("myFunction", scopedController => {
scopedController.addEventListener("ready", function(event, smartElement, data) {
var myData = scopedController.getCustomServerData();
if (myData && myData.repaintColor) {
$("body").css("background-color", myData.repaintColor);
}
});
});