简体   繁体   English

smarty变量将不会输出

[英]smarty variable will not output

I am trying to use the paginator class from http://net.tutsplus.com/tutorials/php/how-to-paginate-data-with-php/ but for some reason I cannot output the pagination links in the smarty var in my template. 我正在尝试使用http://net.tutsplus.com/tutorials/php/how-to-paginate-data-with-php/中的分页器类,但是由于某些原因,我无法在smarty var中输出分页链接我的模板。

I have tried this: 我已经试过了:

function listadverts($where = null, $orderby = null, $limit = null) {         

        $pages = new Paginator;
        $pages->items_total = $this->countadverts($where);
        $pages->mid_range = 9;
        $pages->paginate();

        $row = $this->db->dbh->query('SELECT ad.*, (SELECT img.image FROM '.$this->config->db_prefix.'_images AS img WHERE img.aid = ad.aid LIMIT 1) AS img FROM '.$this->config->db_prefix.'_adverts ad WHERE (ad.approved = 1) '. $where .' ORDER BY '.$orderby.' cr_date DESC '. $pages->limit .'');

        $smarty = new Smarty();

        $smarty->assign('paginate', $pages->display_pages());
        return $row;
    }

and in my template I have 在我的模板中

{$paginate}

the function 功能

$pages->display_pages()

returns $this->return; 返回$this->return;

where $this->returns contains this HTML 其中$ this-> returns包含此HTML

$this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$target?page=$i&ipp=$this->items_per_page\">$i</a> ";

{$paginate|@var_dump} just returns NULL, but if i var_dump($smarty) I can see {$ paginate | @var_dump}仅返回NULL,但是如果我var_dump($ smarty),我可以看到

["paginate"]=> object(Smarty_Variable)#114 (3) { ["value"]=> string(227) "1 2 3 4 All "

SOLUTION: 解:

return array(0 => $row, 1 => $pages->display_pages());

$res = $adverts->listadverts();    
$app->view()->setData('adverts', $res[0]);
$app->view()->setData('paginate', $res[1]);

The code example suggests $smarty should only exist inside your function. 该代码示例建议$ smarty仅应存在于函数内部。 Try global $smarty; 尝试使用全球$ smarty; to make is accessible outside too or insert data into $smarty outside your functions 使外部也可以访问或在功能之外将数据插入$ smarty

function listadverts($where = null, $orderby = null, $limit = null) { 

    $pages = new Paginator;
    $pages->items_total = $this->countadverts($where);
    $pages->mid_range = 9;
    $pages->paginate();

    $row = $this->db->dbh->query('SELECT ad.*, (SELECT img.image FROM '.$this->config->db_prefix.'_images AS img WHERE img.aid = ad.aid LIMIT 1) AS img FROM '.$this->config->db_prefix.'_adverts ad WHERE (ad.approved = 1) '. $where .' ORDER BY '.$orderby.' cr_date DESC '. $pages->limit .'');

    return $pages->display_pages();
}

$smarty = new Smarty();
$smarty->assign('paginate', listadverts(... ));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM