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);
        }
    }
);
×