1

Topic: Comment faire valider la valeur d'un attribut lors d'un changement d'état ?

[Testé avec freedom-toolbox 3.0.10]

Il arrive couramment qu'on est besoin de faire valider la valeur d'un attribut lors d'un changement d'état. Pour ce faire, vous pouvez :

Ajouter un paramètre au cycle de vie du même type que l'attribut à valider,
Ajouter une valeur par défaut à ce paramètre identique à celle de l'attribut dont vous voulez faire valider la valeur (pour ce faire utiliser la fonction getInstanceValue http://api.dynacase.org/php/3.0/FREEDOM/CORE/WDoc.html#methodgetInstanceValue )
Ajouter le paramètre à valider dans le Ask
Ajouter au M1 une fonction pour affecter la valeur du paramètre du cycle à celle de l'attribut de la famille à valider.
Exemple de fonction d'affectation :

/**
     * Met à jour un attribut
     *
     * @param string  $paramCycle nom du paramètre du cycle où chercher l'info à mettre à jour
     * @param string  $attrName   nom de l'attribut à mettre à jour
     * @param boolean $isArray    si l'attribut à mettre à jour est une colonne d'un tableau => met à jour la ligne courante
     *
     * @return string error message, if no error empty string
     */
    private function _updateAttr($paramCycle, $attrName, $isArray = false)
    {
        $err = "";
        $doc = $this->doc;
        if ($isArray) {
            $k = count($doc->getTValue($attrName)) - 1;
            $err.= ($err ? "\n" : '') . $doc->setValue($attrName, $this->getValue($paramCycle) , $k);
        } else {
            $err.= ($err ? "\n" : '') . $doc->setValue($attrName, $this->getValue($paramCycle));
        }
        if (!$err) {
            $err.= ($err ? "\n" : '') . $doc->modify();
        }
        if ($err) {
            $err = '[' . __METHOD__ . "]\t" . $err;
        }
        return $err;
    }

La demande d'évolution 700 (http://dev.dynacase.org/issues/700) adresse une partie de ce besoin et sera mise en place dans la version suivante de Dynacase.