2010-12-15 57 views

回答

0

我找到了一个解决方案,它不是很漂亮,但为我工作。我只使用$ _REQUEST ['url']并通过url捕获控制器名称。这个解决方案的缺点是,如果你的默认路由不同,这个解决方案将无法工作......任何人都有更好的方法?

+0

取决于你试图完成的任务,你可以编写一个组件 – dhofstet 2010-12-16 14:37:24

0

PHP的Magic Constants之一是__CLASS__,它将返回它所在对象的类名。这可能会让你得到你所需要的。

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

魔术常量和方法的乐趣。

+0

我很好奇为什么有人低估了这个?这是一个解决方案的开始,看起来可以工作(即使它不是最理想的)。如果你失望,请留下评论。 – 2010-12-15 19:09:19

+0

我希望我也知道。蛋糕中可能有某种方式。我不使用蛋糕,所以我不知道。也许Cake不使用控制器的类?谁知道。 – DampeS8N 2010-12-15 19:29:40

+1

我没有downvote这个答案,但这不只是返回行为的名称? – dhofstet 2010-12-16 10:26:06

3

试试这个。如果你只需要控制器的名字。

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

Downvoted,因为您不能从模型名称派生控制器的名称,因为可以从不同的控制器使用模型。 – dhofstet 2010-12-16 06:03:12

+0

@dhofestet:thankz纠正。我没有想到这种情况。 :( – RSK 2010-12-16 16:46:59

5

我知道这个问题是很老,但这里的妥善解决办法是:

$this->params['controller']

欲了解更多有关的 'PARAMS' 属性:
http://book.cakephp.org/view/963/The-Parameters-Attribute-params

+1

$ this-> params在Model – rizidoro 2012-02-15 13:49:17

+2

里面是不可访问的@rizidoro模型应该没有任何其他MVC方面的意识,比其自身更好。将获取控制器中的控制器名称并将其作为参数传递给模型。 – TheBigB 2012-03-03 15:10:34

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

给你的控制器名称

相关问题