2010-05-28 5 views
1

J'essaye d'écrire un comportement qui donnera à mes modèles l'accès à un moteur de workflow simple que j'ai conçu. Le moteur de workflow fonctionne lui-même comme un modèle CakePHP, avec des données de flux de travail stockées dans la base de données comme toutes les autres données de modèle sont stockées.Puis-je utiliser un modèle spécifique à partir d'un comportement dans CakePHP?

Fondamentalement, ce que je veux faire, c'est que le comportement utilise le modèle de flux de travail lorsqu'une action est appelée sur le modèle de base. Par exemple, si l'action edit() est exécutée pour Posts, la publication (avec le comportement ci-joint) déclenchera le comportement du workflow avec son propre nom de modèle, action et id comme arguments (par exemple [Post, edit, 1]) . Le comportement appelle ensuite la fonctionnalité du modèle de workflow, qui contient un enregistrement de ce qu'il faut faire lorsque l'édition est exécutée sur les publications (par exemple, envoyer un courrier électronique aux utilisateurs qui sont abonnés à ce poste) et l'exécuter.

Ma question est, quelle est la bonne façon d'invoquer des méthodes de modèle/contrôleur à l'intérieur du comportement? Le modèle à utiliser à l'intérieur du comportement sera toujours Workflow, mais le comportement devrait être utilisable à partir de n'importe quel modèle (à part Workflow lui-même). Je sais que je pourrais exécuter des requêtes SQL directement à partir du comportement, mais bien sûr ce n'est pas la façon de faire un gâteau :-)

Ou, est-ce que je m'y prends mal? Je veux stocker une certaine quantité de logique dans la base de données afin qu'elle soit facilement configurable par différents utilisateurs et ne pas avoir de vérifications de configuration sans fin dans la logique du modèle/contrôleur elle-même afin de pouvoir facilement ajouter/modifier/supprimer .

Répondre

2
App::import('Model', 'YourModel'); 
$obj = new YourModel(); 

http://book.cakephp.org/view/938/Loading-Models

+0

Merci pour le lien. Est-ce "propre" à faire à partir d'un comportement? –

+1

C'est un moyen correct d'importer un modèle qui n'est pas lié au comportement. Si vous avez besoin du modèle qui est attaché au comportement, alors vous passez la référence à la méthode du comportement: 'function doSomething (& $ Model) {/ * Faites quelque chose ici * /}'. Vous trouverez plus d'informations sur la création d'un comportement ici: http://book.cakephp.org/view/1073/Creating-Behaviors. – bancer