Как получить имя текущей модели, к которой привязан этот контекст представления? - PullRequest
4 голосов
/ 02 декабря 2010

в API, вызов $ this-> model вернет имя модели, но оно не работает.

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

api cakephp false?даже $ view-> modelId тоже не работает.

Ответы [ 7 ]

12 голосов
/ 30 января 2012

В контроллере:

$this->modelClass
8 голосов
/ 09 ноября 2011

Попробуйте это

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

это должно изменить имя вашего контроллера на имя модели. И вы можете сделать это, конечно, с уровня просмотра.

3 голосов
/ 13 февраля 2011

да, вы можете сообщить свою модель, чтобы назвать ее название.поэтому напишите функцию в вашей модели, например:

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

, и теперь ваш контроллер может запросить у ваших моделей их имена.

2 голосов
/ 18 апреля 2013

Используйте Инфлекторы для достижения желаемого результата:

<?php $model = Inflector::camelize(Inflector::singularize($this->params['controller'])); ?>
0 голосов
/ 12 февраля 2014

Если вы следуете конвенциям и правилам CakePHP, имя модели совпадает с именем контроллера, но в единственном числе, имя контроллера должно быть множественным, поэтому для получения имени контроллера в представлении просто добавьте следующее:

<?php
$controller = $this->name

и название модели будет:

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

это единственный способ узнать название модели

0 голосов
/ 08 августа 2012

попробуйте это:

$view =& ClassRegistry::getObject('view');
$models = $view->params['models'];
0 голосов
/ 02 декабря 2010

Вы не можете. Это потому, что родительский объект представления является контроллером (к которому вы также не можете получить доступ), и контроллер может иметь несколько моделей.

Если вы пытаетесь получить доступ к названию модели в своем представлении, очень вероятно, что вы делаете что-то не так или просто не поняли шаблон проектирования MVC.

Я не могу вспомнить ни одного случая, когда название модели имеет отношение к представлению. Я настаиваю, вы делаете что-то не так.

...