我的authorcontroller文件
class AuthorController extends AppController {
public function author_quotes_list($author,$page="null")
{
$perpage=30;
$this->commen();
$author_data=$this->Author->query("select author.*,professions.professions_name from author,professions where author.professions_id=professions.id and author.author_name='$author' and author.status=1 ");
$this->set('author_data',$author_data);
//paging
$count=$quotes_data=$this->Author->query("select count(id) from quotes where author_id=".$author_data[0]['author']['id']." and status=1");
$limit=$this->paging($page,$count,$perpage);
$quotes_data=$this->Author->query("select id,quotes from quotes where author_id=".$author_data[0]['author']['id']." and status=1 limit $limit,$perpage");
//print_r($quotes_data);
$this->set('quotes_data',$quotes_data);
}
public function ratings($q_id)
{
//echo $quotes_id;
$tuser=$this->Author->query("select count(id) from user where status=1");
//print_r($tuser);
if($tuser==NULL)
{
$this->set('tuser',0);
}
else
{
$this->set('tuser',$tuser[0][0]['count(id)']);
}
$vusers=$this->Author->query("select * from totalrate where quoteid=$q_id");
print_r($vusers);
if($vusers==NULL)
{
$this->set('vuser',0);
$this->set('trate',0);
}
else
{
$this->set('vuser',$vusers[0]['totalrate']['totaluser']);
$this->set('trate',$vusers[0]['totalrate']['totalrate']);
}
}
我的author_quotes_list.ctp文件
<?php $this->requestAction(array('controller' => 'Author', 'action' => 'ratings/'.$quotes['quotes']['id']));?>
<div class="star_txt">(<?php echo $trate; ?>/5, <?php echo $vuser; ?> votes) from <?php echo $tuser; ?> Users</div>
当我调用作者控制器的评级功能时,调用此函数但不设置$ trate,$ vuser和$ tuser值的值。
答案 0 :(得分:0)
我建议在if之后的控制器中 你写:debug($ tuser); 并在新行中写:debug($ vusers);
我认为这句话:$ this-&gt; set('tuser',$ tuser [0] [0] ['count(id)']);没有设置hte变量$ tuser因为我认为$ tuser [0] [0] [count(id)]不是有效的索引。 所以debug函数会显示你调试的数组的内容和索引
答案 1 :(得分:0)
我认为您可以使用更好的“CakePHP实践”。首先采取更多的OOP方法并做
if (!empty($vusers)) {
其次,如果你的模型设置正确,那么使用find()会好得多;
$this->Author->Rate->find('first', array('conditions' => ....)));
最后如上所述,而不是print_r使用cakephp命令
debug();
答案 2 :(得分:0)
首先要注意更好的CakePHP实践。另请看这个页面:http://book.cakephp.org/2.0/en/views.html
在本页中间的某处,它说: “你可以通过使用requestAction()来充分利用元素.requestAction()函数从控制器动作中获取视图变量,将它们作为数组返回。”
所以你的变量是由requestAction返回的,它们不会像你视图中的标准变量那样设置。你必须从requestAction中取回它们并从那里使用它们:
<?php $vars = $this->requestAction(array('controller' => 'Author', 'action' => 'ratings/'.$quotes['quotes']['id']));?>
<?php echo $vars[...] ?>