2010-12-15 87 views

Répondre

0

J'ai trouvé une solution, ce n'est pas joli mais ça a marché pour moi. J'utilise simplement le $ _REQUEST ['url'] et attrape le nom du contrôleur par url. L'inconvénient de cette solution, c'est que si vous avez un itinéraire différent par défaut, cette solution ne fonctionnera pas ... quelqu'un a une meilleure approche?

+0

En fonction de ce que vous essayez d'accomplir, vous pouvez écrire un composant – dhofstet

0

L'une des constantes magiques de PHP est __CLASS__ qui renverra le nom de classe de l'objet dans lequel elle se trouve. Cela peut vous apporter ce dont vous avez besoin.

http://php.net/manual/en/language.constants.predefined.php

Constantes magiques et méthodes sont amusants.

+0

Je suis curieux de savoir pourquoi quelqu'un a déprécié cela? C'est le début d'une solution qui semble fonctionner (même si elle n'est pas optimale). S'il vous plaît laissez un commentaire si vous downvote. –

+0

Je voudrais savoir aussi. Probablement il y a un moyen dans Cake. Je n'utilise pas de gâteau, donc je ne sais pas. Peut-être que Cake n'utilise pas de classes pour les contrôleurs? Qui sait. – DampeS8N

+1

Je n'ai pas déprécié cette réponse, mais cela ne renvoie-t-il pas simplement le nom du comportement? – dhofstet

3

Essayez ceci. Si vous avez seulement besoin du nom du contrôleur.

Inflector::pluralize($this->name); 
+4

Downvoted parce que vous ne pouvez pas dériver le nom d'un contrôleur d'un nom de modèle en tant que modèle peut être utilisé à partir de différents contrôleurs. – dhofstet

+0

@dhofestet: merci pour corriger.je n'ai pas pensé à ce cas. :( – RSK

5

Je sais que cette question est assez vieux, mais la bonne solution serait ici:

$this->params['controller']

Pour plus d'informations sur l'attribut 'params':
http://book.cakephp.org/view/963/The-Parameters-Attribute-params

+1

$ this-> params n'est pas accessible à l'intérieur Modèle – rizidoro

+2

@rizidoro Le modèle ne doit pas avoir connaissance d'un autre aspect MVC que lui-même. obtiendrait le nom du contrôleur dans le contrôleur et le passerait au modèle en tant qu'argument. – TheBigB

2
$GLOBALS['Dispatcher']->params['controller'] 

sera vous donne le nom du contrôleur