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 et initid sont égales à chaîne vide,
  • lors d'une révisions la propriété initid est valuée et id 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().

13.6.2.1.8 Voir aussi

×