【发布时间】:2010-12-02 19:43:00
【问题描述】:
在 API 中,调用 $this->model 将返回模型的名称,但它不起作用。
http://api13.cakephp.org/class/view
api cakephp 是假的吗?甚至 $view->modelId 也不起作用。
【问题讨论】:
标签: cakephp cakephp-1.3
在 API 中,调用 $this->model 将返回模型的名称,但它不起作用。
http://api13.cakephp.org/class/view
api cakephp 是假的吗?甚至 $view->modelId 也不起作用。
【问题讨论】:
标签: cakephp cakephp-1.3
在控制器中:
$this->modelClass
【讨论】:
Plugin.Model)。您可能需要拆分名称
试试这个
Inflector::classify( $this->params['controller']);
这应该将您的控制器名称更改为模型名称。当然,您可以从视图级别执行此操作。
【讨论】:
是的,你可以,你需要告诉你的模型告诉它的名字。所以在你的模型中写一个函数,比如:
function myname(){
return $this->name;
}
现在你的控制器可以向你的模型询问他们的名字了。
【讨论】:
使用Inflectors 来实现您想要的结果:
<?php $model = Inflector::camelize(Inflector::singularize($this->params['controller'])); ?>
【讨论】:
你不能。那是因为视图的父级是一个控制器(您也不能访问它),并且该控制器可以有多个模型。
如果您尝试在视图中访问模型的名称,很可能您做错了什么,或者您还没有理解 MVC 设计模式。
我想不出模型名称与视图相关的一种情况。我坚持,你做错了什么。
【讨论】:
试试这个:
$view =& ClassRegistry::getObject('view');
$models = $view->params['models'];
【讨论】:
如果您遵循 CakePHP 约定和规则,模型名称与控制器名称相同,但单数时,控制器名称应为复数,因此要在 View 中获取控制器名称,只需添加以下内容:
<?php
$controller = $this->name
视图中的模型名称将是:
$model = trim($controller , "s");
这是在视图中获取模型名称的唯一方法
【讨论】:
Territory > Territories,这不适用于你的代码。
Inflector::singularize($controller)。如果您的控制器 /starts/ 带有“s”,这也可能会产生奇怪的结果。