控制器:
<?php
class VideosController extends ForumAppController {
/**
* Controller Name
* @access public
* @var string
*/
public $name = 'Videos';
public function index() {
$videos = $this->Video->getVideos();
$this->set('videos', $videos);
}
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('*');
if (isset($this->params['admin'])) {
$this->Toolbar->verifyAdmin();
$this->layout = 'admin';
}
$this->Security->validatePost = false;
$this->set('menuTab', 'videos');
}
}
?>
型号:
<?php
class Video extends ForumAppModel {
public $name = 'Video';
function getVideos() {
$vids = $this->find('all', array (
'order' => array('Video.id DESC')
));
return $vids;
}
}
?>
我收到错误:
Notice (8): Undefined property: VideosController::$Video [CORE/plugins/forum/controllers/videos_controller.php, line 13]
如果我这样做
$this->loadModel('video');
我收到错误:
Warning (512): SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'getVideos' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 549]
**Query: getVideos**
任何可能导致此问题的想法?
答案 0 :(得分:1)
您的代码似乎是正确的,但似乎CakePHP并未尝试从正确的位置加载模型。您可以使用控制器中的$ uses变量指定要加载的模型。
因为您使用的是插件,所以需要在模型前面添加插件的名称。
$uses = array('Forum.Video');
CakePHP应该自己处理它,但是一些旧版本的CakePHP有一个错误,阻止它正常工作。它似乎在1.3.10中得到修复。
有关$ uses变量的更多详细信息,请参阅http://book.cakephp.org/view/961/components-helpers-and-uses。
答案 1 :(得分:0)
$ name变量是控制器名称,而不是模型名称控制器使用,
试试这个
$uses = "Videos"