13.6.2.1 Doc::preCreated()
Hameçon (ou hook) utilisé par la méthode Doc::Store()
.
Elle est appelée avant l'enregistrement en base de données. Cette méthode est
principalement utilisée pour vérifier si les conditions de création / révision
de document sont valides.
Cette méthode est utilisable aussi pour pré-remplir des attributs avant l'enregistrement.
Attention :Cette méthode est aussi appelée lors de la révision d'un document.
13.6.2.1.1 Description
string preCreated ()
Si cette méthode retourne un message d'erreur alors la création est abandonnée
et la méthode Doc::store()
retourne le message fourni par cette
méthode afin d'indiquer l'échec.
13.6.2.1.1.1 Avertissements
Cette méthode est appelée lors la création initiale et lors des révisions du document. Toutefois, il est possible de différencier la création de la révision car :
- lors d'une création les propriétés
id
etinitid
sont égales à chaîne vide, - lors d'une révisions la propriété
initid
est valuée etid
est égale à chaîne vide.
On peut donc reconnaître le cas de la révision de celui de la création initiale en faisant :
namespace My; use \Dcp\AttributeIdentifiers\MyFamily as MyAttributes; class MyFamily extends Dcp\Family\Document { public function preCreated() { error_log('initid '.var_export($this->initid, true)); error_log('id '.var_export($this->id, true)); if ($this->initid === "") { error_log("I'm in first creation"); } else { error_log("I'm in creation of a revision"); } } }
Ce qui donne les logs suivants, si l'on créée un document et que l'on révise celui-ci juste après :
- Lors de la création :
initid '' id '' I'm in first creation
- Lors de la révision :
initid '1453' id '' I'm in creation of a revision
13.6.2.1.2 Liste des paramètres
Aucun paramètre.
13.6.2.1.3 Valeur de retour
Message d'erreur. Si la méthode retourne une chaîne de caractères non vide, elle est considérée comme un message d'erreur et la création de document est abandonnée.
Ce message est aussi stocké dans le paramètre de sortie $info->error
de la
méthode Doc::store()
.
13.6.2.1.4 Erreurs / Exceptions
Aucune.
13.6.2.1.5 Historique
Aucun.
13.6.2.1.6 Exemples
Dans la famille MyFamily, la création d'un document ne doit être possible que si la somme des attributs MY_NUMBERONE et MY_NUMBERTWO est inférieur au paramètre MY_MAX de la famille.
Soit la famille suivante :
BEGIN | Ma famille | MYFAMILY | ||||||
---|---|---|---|---|---|---|---|---|
CLASS | My\MyFamily | |||||||
// | idattr | idframe | label | T | A | type | ord | vis |
ATTR | MY_IDENTIFICATION | Identification | N | N | frame | 10 | W | |
ATTR | MY_NUMBERONE | MY_IDENTIFICATION | nombre 1 | Y | N | int | 20 | W |
ATTR | MY_NUMBERTWO | MY_IDENTIFICATION | nombre 2 | N | N | int | 30 | W |
PARAM | MY_PARAMETERS | Paramètres | N | N | frame | 10 | W | |
PARAM | MY_MAX | MY_PARAMETERS | max | N | N | int | 20 | W |
END |
namespace My; use \Dcp\AttributeIdentifiers\MyFamily as MyAttributes; class MyFamily extends \ Dcp\Family\Document { public function preCreated() { $err = parent::preCreated(); $n1 = $this->getAttributeValue(MyAttributes::my_numberone); $n2 = $this->getAttributeValue(MyAttributes::my_numbertwo); $max = $this->getFamilyParameterValue(MyAttributes::my_max); if (($n1 + $n2) > $max) { $err .= ($err ? "\n" : "") . sprintf("Max %d is reached", $max); } return $err; } }
13.6.2.1.7 Notes
En cas de famille héritée, il est nécessaire d'appeler l'hameçon du parent pour disposer des mêmes fonctionnalités.
Cette méthode est appelée par Doc::store()
qu'en cas de création
ou de révision tandis que l'hameçon Doc::preStore()
est appelé
systématiquement par la méthode Doc::store()
.