【发布时间】:2011-09-05 15:46:25
【问题描述】:
所以我试图在我的元素视图中添加一个查找表,我通过在我的标签控制器中创建一个辅助函数来做到这一点。
<?php
class TagsController extends AppController {
var $name = 'Tags';
function gettags(){
if (!empty($this->params['requested'])) {
return $this->Tag->find('list', array('fields'=>'Tag.tag_name'));
}
return false;
}
}
然后在我看来,我打电话
<? $tags = $this->requestAction('/tags/gettags'); debug($tags); ?>
但是,它返回错误
警告 (512):SQL 错误:1054:“字段列表”中的未知列“Tag.tag_name”[CORE/cake/libs/model/datasources/dbo_source.php,第 684 行] 查询:SELECT
Tag.id,Tag.tag_nameFROMusersASTagWHERE 1 = 1
这意味着它认为我的标签表实际上是用户。这不会发生在标签视图中。有人对我做错了什么有任何想法吗?这些表不与其他任何东西或任何东西相关联。
我的标签模型是:
<?php
class Tag extends AppModel {
var $name = 'Tag';
var $hasMany = array(
'BrandTag' => array(
'className' => 'BrandTag',
'foreignKey' => 'tag_id',
'dependent' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
));
}
?>
【问题讨论】:
-
你能附上你的标签模型文件吗?
-
使用
requestAction真的不是一个好习惯。它有点打破了 MVC 的概念。您实际上应该在呈现该视图的控制器操作中设置gettags函数的结果。像这样的东西:$this->set('tags',$this->gettags()); -
我会这样做,但 cakephp 中的元素视图没有附加直接视图。所以我只是把函数放在标签控制器中
标签: cakephp