在API中,調用$ this-> model將返回model的名稱,但它不工作。如何獲取此視圖上下文連接的當前模型的名稱?
http://api13.cakephp.org/class/view
是API的CakePHP假的?甚至$ view-> modelId也不工作。
在API中,調用$ this-> model將返回model的名稱,但它不工作。如何獲取此視圖上下文連接的當前模型的名稱?
http://api13.cakephp.org/class/view
是API的CakePHP假的?甚至$ view-> modelId也不工作。
你不能。這是因爲視圖的父級是控制器(您無法訪問),並且控制器可能有多個模型。
如果您試圖在您的視圖中訪問模型的名稱,很可能您做錯了某些事情,或者您還沒有理解MVC設計模式。
我想不出一個模型的名字與視圖有關的情況。我堅持認爲,你做錯了什麼。
是的,你可以,你需要告訴你的模型告訴它的名字。所以在你的模型寫功能,如:
function myname(){
return $this->name;
}
現在你的控制器可以問你的模型的名字。
在嘗試這個
Inflector::classify($this->params['controller']);
這種情況需要改變你的控制器名稱型號名稱。你可以從視圖層面做到這一點。
thsi可能不起作用http://www.blog.zahidur.com/how-to-get-model-name-in-cakephp/閱讀評論 – aWebDeveloper 2011-12-01 10:16:30
在控制器函數:$ this-> modelClass
試試這個:
$view =& ClassRegistry::getObject('view');
$models = $view->params['models'];
使用Inflectors才達到你想要的結果:
<?php $model = Inflector::camelize(Inflector::singularize($this->params['controller'])); ?>
如果你正在跟蹤CakePHP的公約和規則,模型名稱與控制器名稱相同,但以單數形式表示,控制器名稱應爲複數形式,因此要在View中獲取控制器名稱,只需添加以下內容:
<?php
$controller = $this->name
,並鑑於型號名稱將是:
$model = trim($controller , "s");
這是視圖來獲取型號名稱的唯一途徑
「我想不出1箱子其中一個型號的名稱與視圖相關「 - 探索CakePHP如何工作? – jason 2010-12-03 03:31:51
如果您需要突出顯示可視化菜單上的選定部分,我可以發現它很有用。或者我也錯過了什麼? – vitto 2011-06-04 08:57:32
當你需要在一個元素中動態創建一個表單時呢? – user6972 2013-08-01 18:14:51