2010-12-02 80 views

回答

0

你不能。這是因爲視圖的父級是控制器(您無法訪問),並且控制器可能有多個模型。

如果您試圖在您的視圖中訪問模型的名稱,很可能您做錯了某些事情,或者您還沒有理解MVC設計模式。

我想不出一個模型的名字與視圖有關的情況。我堅持認爲,你做錯了什麼。

+0

「我想不出1箱子其中一個型號的名稱與視圖相關「 - 探索CakePHP如何工作? – jason 2010-12-03 03:31:51

+0

如果您需要突出顯示可視化菜單上的選定部分,我可以發現它很有用。或者我也錯過了什麼? – vitto 2011-06-04 08:57:32

+0

當你需要在一個元素中動態創建一個表單時呢? – user6972 2013-08-01 18:14:51

3

是的,你可以,你需要告訴你的模型告訴它的名字。所以在你的模型寫功能,如:

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

現在你的控制器可以問你的模型的名字。

8

在嘗試這個

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

這種情況需要改變你的控制器名稱型號名稱。你可以從視圖層面做到這一點。

+0

thsi可能不起作用http://www.blog.zahidur.com/how-to-get-model-name-in-cakephp/閱讀評論 – aWebDeveloper 2011-12-01 10:16:30

12

在控制器函數:$ this-> modelClass

0

試試這個:

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

使用Inflectors才達到你想要的結果:

<?php $model = Inflector::camelize(Inflector::singularize($this->params['controller'])); ?> 
0

如果你正在跟蹤CakePHP的公約和規則,模型名稱與控制器名稱相同,但以單數形式表示,控制器名稱應爲複數形式,因此要在View中獲取控制器名稱,只需添加以下內容:

<?php 
$controller = $this->name 

,並鑑於型號名稱將是:

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

這是視圖來獲取型號名稱的唯一途徑

相關問題