utiliser le composant cakephp dans un model
comment utiliser un component que j'ai créé dans cakePHP dans une de mes classes model? Est-ce possible?
Si oui, s'il vous plaît laissez-moi savoir comment je peux faire
3 réponses
C'est possible, mais assez mauvaise pratique dans un MVC cadre. Vous devriez repenser et réorganiser votre code si vous pensez que vous avez besoin d'utiliser le composant dans un modèle parce que quelque chose est clair mauvais puis.
on pense qu'un composant Partage du code entre les contrôleurs, entre les contrôleurs.
- Composants CakePHP 1.3
- Composants CakePHP 2.x
- Composants CakePHP 3.x
Pour partager du code réutilisable entre les modèles, il serait un comportement. Pour une vue, ce serait un assistant.
si vous avez un code vraiment générique, ce doit être un lib ou mettez-le dans le répertoire utilitaire / namespace ou créez un nouvel namespace. Vérifiez les classes existantes là pour se faire une idée quoi mettre dedans.
Aucun code n'a été fourni de sorte qu'il n'est pas possible de donner de réel recommandation sur la façon de le remanier. Cependant, la façon dont vous voulez utiliser le code existant ne fonctionnera pas dans le contexte MVC, donc il est temps de repenser votre approche de tout ce que vous essayez de faire.
il est possible d'utiliser un composant à l'intérieur d'un modèle (mais je ne peux pas commenter s'il s'agit d'une recommandation ou d'une pratique exemplaire).
inspiré de source originale un exemple d'utilisation d'un composant appelé "Geocoder" dans un modèle:
App::import('Component','GeoCoder');
$gc = new GeoCoderComponent(new ComponentCollection);
alors vous pouvez utiliser $gc
pour appeler les fonctions du composant.
--
@AD7six
// Use anywhere
AuthComponent::user('id')
// From inside a controller
$this->Auth->user('id');
dans le gâteau de la documentation PHP, ils fournissent AuthComponent::user('id')
pour qu'il puisse être utilisé dans des endroits autres qu'un contrôleur.
peut-être que j'ai besoin d'un plus grand indice, mais pourquoi mon modèle ne pourrait-il pas accéder aux informations ACL ?