【问题标题】:How to display json data in a smarty template?如何在 smarty 模板中显示 json 数据?
【发布时间】:2013-08-08 16:14:46
【问题描述】:

我正在为我的网站使用 smarty 和 php。有一些代码可以将数据转换为 json。我想在 smarty 模板中使用该数据。该数据是一组错误消息,我想在指定的 smarty 模板中以所需的 ID 显示这些消息。我无法在 smarty 模板中得到它。实际上发生的事情是错误消息显示在普通页面上,而不是显示在所需的标签中。 以下是我的聪明和 PHP 代码: 以下是我要显示错误消息的 smarty 代码:

if $error_msg}<div class="error-info">{$error_msg.error_msgs}</div>{/if}

下面是我的 PHP 代码:

<?php
if($request['form_submitted']=='yes') {
                $ret = $objPracticeSheet->InsertPracticeSheet($request, $practice_sheet_error_messages);
                if(!$ret) { 
                    $error_msg  = $objPracticeSheet->GetAllErrors();
                    $data = array();
                    $data['error_message'] = $error_msg['error_msgs'];
                    $data = json_encode($data);
                    echo $data;
                    die;
                } else {
                    $data = array();
                    $data['success_message'] = "success";
                    $data = json_encode($data);
                    echo $data;
                    die;
                }
            } else { 

                $all_subjects = $objSubjectsTopicsQues->GetAllSubjectsHavingTopics();
                $smarty->assign('all_subjects', $all_subjects);
                $smarty->assign('sheet_type', 'practice');
                $bread_crumbs_text = 'Add Practice Sheet';
                $submit_value      = 'Submit';
                $cancel_value      = 'Cancel';
                $file_to_show      = 'manage-practice-sheet.tpl';
            }
$smarty->assign("op", $op);
    $smarty->assign("query_string", $query_string);
    $smarty->assign("bread_crumbs_text", $bread_crumbs_text);
    $smarty->assign("submit_value", $submit_value);
    $smarty->assign("cancel_value", $cancel_value);
  $smarty->assign("error_msg", $error_msg);
  $smarty->assign("file_to_show", $file_to_show);
  /*$smarty->assign('create', '-active');
  $smarty->assign("sub_menu_file", "epn-create-sub-menu.tpl");
  $smarty->assign('practice_sheet', '-active');*/
  $smarty->assign('practice_sheet', 'active');
  $smarty->assign('prepare', 'selected');
  $smarty->display("index.tpl");
?>

您能帮我在上面的 div 中显示错误消息 json 数据吗?提前致谢。我还附上了当前输出的截图。

【问题讨论】:

    标签: php json smarty jsonresult


    【解决方案1】:

    使用 JavaScript 解析 JSON,然后将错误放在 div 中。

    为了让这更容易,让我们给你的 div 一个id

    <div id="error-info-main" class="error-info"></div>
    

    然后

    <script>
    {literal}
    (function() {
        var error_json = {/literal}{$error_msg.error_msgs}{literal};
        var errors = JSON.parse(error_json);
        document.getElementById('error-info-main').innerHTML = errors.error_message;
    }());
    {/literal}
    </script>
    

    或者,您可以只从 PHP 传递消息本身:

    $smarty->assign("error_msg", $error_msg->error_message);
    

    这可能不是 100% 正确,因为我没有要测试的数据,但我相信这是正确的。无论如何,你都会明白的。

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 2014-11-12
      • 2016-11-27
      • 2016-09-26
      • 1970-01-01
      • 2012-06-19
      • 2014-11-22
      • 2021-10-08
      • 2018-08-29
      相关资源
      最近更新 更多