Smarty从课堂上获取while模板

时间:2014-09-09 09:27:25

标签: php smarty

我对聪明的全新......并且它让我爬出来了:))

我在/inc/class/search.php中得到了以下类:

Class search
{
    function __construct($request) {
        global $dbconn;
        $request = htmlspecialchars($request);

        $sql = "SELECT * FROM table WHERE id LIKE '%{$request}%'";
        $res = $dbconn->Query($sql);
        $entity = $res->fetchArray();
        return $entity;
    }
}

我在php_head.php中有这个:

if (isset($_REQUEST['search']) && !empty($_REQUEST['search'])) {
    $is = new search($_REQUEST['search']);
    $smarty->assign("searchValues", $is);
}

php_head中的此代码旨在稍后由ajax调用。但是当我运行index.php?search = string时,我得到了整个聪明的模板。请帮忙。

2 个答案:

答案 0 :(得分:1)

当您在网址中搜索时,您需要做的只是显示部分输出。

所以你可以这样修改你的代码:

if (isset($_REQUEST['search']) && !empty($_REQUEST['search'])) {
    $is = new search($_REQUEST['search']);
    $smarty->assign("searchValues", $is);
    $smarty->display('searchvalues.tpl'); // custom base template
    exit; // stop execution of later code
}

您应该创建searchvalues.tpl模板并在此处仅显示您要显示的此部分,而不是整个基本模板。

答案 1 :(得分:0)

您需要清除ajax所需的模板,以及是否要将其包含在其他模板中

{include file="path_to_template.tpl"}

当您只需要使用此模板的结果时

echo $smarty->fetch('path_to_template.tpl');

例如,你有:

$smarty->display('index.tpl');// this will return index.tpl

在index.tpl中:

<div id="result_ajax">
    {include file="ajax_template.tpl"}
</div>

在ajax.php中:

//Do some stuff
echo $smarty->fetch('ajax_template.tpl');