学习 PHP模板引擎Smarty入门使用 出错:C:\AppServ\www\mb\smarty\Smarty.class.php on line 780

example6.tpl模板文件目录templates<html><head><title>这是一个foreach使用的例子</title></head><body>这里... example6.tpl 模板文件 目录 templates
<html>
<head><title>这是一个foreach使用的例子</title></head>
<body>
这里将输出一个数组:<br>
{foreach from=$newsArray item=newsID}
新闻编号:{$newsID}<br>
新闻内容:{$newsTitle}<br><hr>
{foreachelse}
对不起,数据库中没有新闻输出!
{/foreach}
</body>
</html>

example6.php 目录 根目录下

<?php

include_once("Smarty/Smarty.class.php");
$smarty = new Smarty();
$smarty->templates("templates");
$smarty->templates_c("templates_c");
$smarty->cache("cache");
$smarty->cache_lifetime = 0;
$smarty->caching = true;
$smarty->left_delimiter = "{";
$smarty->right_delimiter = "}";
$array[] = array("newsID"=>1, "newsTitle"=>"第1条新闻");
$array[] = array("newsID"=>2, "newsTitle"=>"第2条新闻");
$array[] = array("newsID"=>3, "newsTitle"=>"第3条新闻");
$array[] = array("newsID"=>4, "newsTitle"=>"第4条新闻");
$array[] = array("newsID"=>5, "newsTitle"=>"第5条新闻");
$array[] = array("newsID"=>6, "newsTitle"=>"第6条新闻");
$smarty->assign("newsArray", $array);
//编译并显示位于./templates下的index.tpl模板
$smarty->display("example6.tpl");
?>

运行PHP程序,出现

Fatal error: Uncaught exception 'SmartyException' with message 'Call of unknown function 'templates'.' in C:\AppServ\www\mb\smarty\Smarty.class.php:780 Stack trace: #0 [internal function]: Smarty->__call('templates', Array) #1 C:\AppServ\www\mb\example6.php(13): Smarty->templates('templates') #2 {main} thrown in C:\AppServ\www\mb\smarty\Smarty.class.php on line 780
一楼的我早就用过了,运行没有问题,但是读取不了数据出来。是不是我文件权限,还是少装了什么东西。
展开
 我来答
pzl7758
2010-11-25 · TA获得超过603个赞
知道小有建树答主
回答量:962
采纳率:100%
帮助的人:621万
展开全部
一是设置那三目录用
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
$smarty->cache_dir = './cache/'; 并确保这三目录存在并且路径正确.

二是你模板写法有误
应改为
新闻编号:{$newsID.newsID}<br>
新闻内容:{$newsID.newsTitle}<br><hr>

三开发期间最好别启用SMARTY CACHE 将 $smarty->caching = false;
gpgkd906
2010-11-25 · TA获得超过142个赞
知道答主
回答量:187
采纳率:0%
帮助的人:207万
展开全部
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
$smarty->cache_dir = './cache/';

用上面部分替换掉下面这一段。
$smarty->templates("templates");
$smarty->templates_c("templates_c");
$smarty->cache("cache");

补充回答:
逻辑页面数组的传递方式和模板页面foreach的写法不匹配,随便改哪一边都可以。
下面是模板页面的改法,没测试过,但应该没问题,你直接把模板里面foreach那一整段替换成下面这样就可以了。

{foreach from=$newsArray item=news}
{foreach name=sub from=$news item=item}
{if $smarty.foreach.sub.first} 新闻编号:{$item}<br>{else}新闻内容:{$item}<br><hr>{/if}
{/foreach}
{foreachelse}
对不起,数据库中没有新闻输出!
{/foreach}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式