如何获取此视图上下文附加到的当前模型的名称?

时间:2010-12-02 19:43:01

标签: cakephp cakephp-1.3

在API中,调用$ this-> model将返回model'sname但它不起作用。

http://api13.cakephp.org/class/view

api cakephp是假的?甚至$ view-> modelId也不行。

7 个答案:

答案 0 :(得分:12)

在控制器中:

$this->modelClass

答案 1 :(得分:8)

试试这个

Inflector::classify( $this->params['controller']);

这应该将您的控制器名称更改为型号名称。当然,您可以从视图级别进行操作。

答案 2 :(得分:3)

是的,你可以,你需要告诉你的模特告诉它的​​名字。所以在你的模型中写一个函数,如:

    function myname(){
    return $this->name;
}

现在您的控制器可以向您的模型询问他们的名字。

答案 3 :(得分:2)

使用Inflectors获得您想要的结果:

答案 4 :(得分:0)

你做不到。那是因为视图的父级是控制器(你也无法访问),控制器可以有多个模型。

如果您尝试在View中访问Model的名称,很可能是您做错了或者您还没有理解MVC设计模式。

我想不出一个模型名称与视图相关的案例。我坚持认为,你做错了什么。

答案 5 :(得分:0)

试试这个:

$view =& ClassRegistry::getObject('view');
$models = $view->params['models'];

答案 6 :(得分:-1)

如果您遵循CakePHP约定和规则,模型名称与控制器名称相同,但单数形式,控制器名称应为复数,因此要在View中获取控制器名称,只需添加以下内容:

<?php
$controller = $this->name

,视图中的模型名称为:

$model = trim($controller , "s");

这是在视图中获取模型名称的唯一方法