4

我的作者控制器文件

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 值的值。

4

3 回答 3

0

我建议在你写 if else 之后的控制器中:debug($tuser); 并在新行中写入: debug($vusers);

我认为这句话: $this->set('tuser',$tuser[0][0]['count(id)']); 没有设置 hte 变量 $tuser 因为我认为 $tuser[0][0][count(id)] 不是有效索引。所以调试函数会显示你调试的数组的内容和索引

于 2013-03-24T12:01:00.747 回答
0

我认为您可以使用一些更好的“CakePHP 实践”。首先采取更多的OOP方法并做

if (!empty($vusers)) {

其次,如果您正确设置了模型,则最好使用 find();

$this->Author->Rate->find('first', array('conditions' => ....)));

最后如上所述而不是 print_r 使用 cakephp 命令

debug();
于 2013-09-09T12:57:44.997 回答
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[...] ?>
于 2014-01-04T10:03:41.720 回答