0

我正在使用基于 PHP 的 MVC 框架

在我的控制器中,我具有以下功能:

public function listing($tag=null, $page=1)
{
    $this->posts('`online`=1', $tag, $page, '%s/%d/');
    $this->locations('`parent`=1');
}

在同一个文件中,我有 2 个函数从 2 个 MySQL 表中收集数据,其中一个用于位置:

private function locations($query)
{   
    // Collect Locations
    $locations = new Locations('WHERE '.$query.' ORDER BY `name` ASC');
    $total_locations = $locations->count();

    // Template
    require Template::render('Posts', 'listing.html');
}

另一个用于帖子:

private function posts($query, $tag, $page)
{
    // Collect Posts
    $posts = new Post('WHERE '.$query.' ORDER BY `date` DESC');
    $total_posts = $posts->count();
    $pages = ceil($total_posts/24);

        if($page < 1) $page = 1;
        if($page > $pages) $page = $pages;

        $min = $page - 4;
        $max = $page + 4;

        if($min < 1)
        {
            $max += 1 - $min;
            $min = 1;
        }

        if($max > $pages)
        {
            $min += $pages - $max;          
            if($min < 1) $min = 1;          
            $max = $pages;
        }

        $posts->query('LIMIT '.($page*24-24).',24');


    // Template
    require Template::render('Posts', 'listing.html');
}

在公共函数(列表)中,当第一行是 时$this->posts...,它正确显示帖子但不显示位置(它只显示“数组”。

如果我把$this->locations...它放在第一位,那么它会正确显示位置而不是帖子。

我不会向您展示更多代码,因为我相信它来自我的写作错误listing function

如何显示两个数组?

在我的视图页面上,我显示这样的位置/帖子:

<?php while($location = $locations->fetch($i)): ?>
    <p>
         <?php echo $location->title; ?>
    </p>
<?php endwhile; ?>
4

2 回答 2

0

我认为问题出在这里

require Template::render('Posts', 'listing.html');

我现在不知道这些参数是什么意思,但我的猜测是第一个是模板中变量的名称,并且对于它们两者,您将其设置为 Posts。

于 2012-12-04T02:17:27.487 回答
0

通过合并2private functions together并从$this->locations('=1');public function

该设计被调用了 2 次,一次是位置,另一次是帖子,因为我调用了模板页面 2 次。

解决方案就是将这两个功能合并在一起!

于 2012-12-04T02:47:14.657 回答