请教:SAE版的Smarty不编译?
发布于:2022-01-17 09:50:54
#1 47660666
直接在SAE商店安装的SAE版的SP,但是发现通过controller跳过来的模版没有显示编译后的结果,直接原样输出了;
查SAE的文档,提示:
SAE不支持本地文件写入,Smarty不能直接使用,但可以通过wrapper使用。
现在请问,上面那个东东应该加到什么地方呢?
这个版本的SP不是已经对SAE做过优化可以直接使用了么?
谢谢各位.
补充内容 (2012-4-9 12:25):http://sae.sina.com.cn/?m=devcenter&catid=11&content_id=213补充内容 (2012-4-9 12:25):http://sae.sina.com.cn/?m=devcenter&catid=11&content_id=213
2012-04-09 12:13:12
#2 jake
能通过controller控制器然后再显示出来,就证明已经通过编译了。
sae版sp针对sae平台做了处理的,所以上面的问题不存在。
你看看是否smarty的左右限定符没有设置正确吧,所以才有“没有编译”的错觉。
2012-04-09 13:01:30
#3 47660666
检查过限定符了,没有问题的.
'view' => array(
'enabled' => TRUE, // 开启Smarty
'config' =>array(
'template_dir' => APP_PATH.'/tpl', // 模板存放的目录
'compile_dir' => APP_PATH.'/tmp', // 编译的临时目录
'cache_dir' => APP_PATH.'/tmp', // 缓存的临时目录
'left_delimiter' => '<{', // smarty左限定符
'right_delimiter' => '}>', // smarty右限定符
),
),
Controller里的:
$this->results = $user->findSql($conditions);
Smarty模板上的:
<{foreach from=$results item=one}>
<{$one.id}>) <{$one.name}>
<{/foreach}>
页面输出还是这个样子:
<{$one.id}>) <{$one.name}>
2012-04-09 13:25:37
#4 jake
“直接原样输出”而不是出错,那就是“已经编译”了。
2012-04-09 13:46:13
#5 47660666
jake 发表于 2012-4-9 13:46
“直接原样输出”而不是出错,那就是“已经编译”了。
汗
原来是SAE商店那个安装包把Smarty目录丢了
不过现在出现了新的问题 页面空白~~~!
2012-04-09 17:11:22
#6 jake
47660666 发表于 2012-4-9 17:11
汗
原来是SAE商店那个安装包把Smarty目录丢了
页面空白是因为模板语法错误,检查一下限定符周围有没有空格,比如说 <{$var空格}>这样就会出错。
2012-04-09 22:07:58
#7 47660666
1.我把所有的Smarty语句全删了 还是空白
2.然后做了个测试,改了下控制器里跳转的tpl的路径,提示:无法载入模板,这说明 路径也是没有问题的,问题到底是什么呢?
2012-04-10 08:28:03
#8 jake
我只能猜测:
1. 是否只替换sae上面的smarty,而不是整个框架重新放进去?建议你在SAE上面单独开一个版本,然后到我们首页下载sae版框架直接放上去用。而不是修修补补。
2. 空白还是模板出错,那是smarty提示的,建议看看sae后台的日志,看看出错信息。
2012-04-10 08:56:52
#9 47660666
jake 发表于 2012-4-10 08:56
我只能猜测:
1. 是否只替换sae上面的smarty,而不是整个框架重新放进去?建议你在SAE上面单独开一个版本, ...
还是不行 依旧显示空白
我的SP包是从Google Code上拖下来的最新的speedphp-3.1.89-sae.zip 确实是SAE专用的了 Smarty的目录也在 没丢失
也开启了
Memcache
几乎没写什么代码啊
这个是index.php 配置文件
define("APP_PATH",dirname(__FILE__));
define("SP_PATH",dirname(__FILE__).'/SpeedPHP');
$spConfig = array(
"db" => array( // 数据库设置
'host' => 'SAE_MYSQL_HOST_M', // 数据库地址
'login' => 'SAE_MYSQL_USER', // 数据库用户名
'password' => 'SAE_MYSQL_PASS', // 数据库密码
'database' => 'SAE_MYSQL_DB', // 数据库的库名称
),
'view' => array(
'enabled' => TRUE, // 开启Smarty
'config' =>array(
'template_dir' => APP_PATH.'/tpl', // 模板存放的目录
'compile_dir' => APP_PATH.'/tmp', // 编译的临时目录
'cache_dir' => APP_PATH.'/tmp', // 缓存的临时目录
'left_delimiter' => '<{', // smarty左限定符
'right_delimiter' => '}>', // smarty右限定符
),
),
);
require(SP_PATH."/SpeedPHP.php");
spRun();
然后Controller里:
class main extends spController
{
function index(){ // 这里是首页
$link = spClass('link'); // 初始化模型类
$conditions = ("select * from link order by linkid asc");
$this->results = $link->findSql($conditions); // 用$this->results发送到模板
$this->display("tpl/index.html");
}
}
调用的Smarty 那个index.html里的语句也是对的啊:
<{foreach from=$results item=one}>
<{$one.linkid}> <{$one.linkname}>
<{/foreach}>
1 页面空白!!!2 删掉模板里的Smarty语句,还是空白,奇了怪了!!!哎... 快烦死了
2012-04-10 10:22:50
#10 jake
sp群内网友 “蓝调” 提供解决方法。
'view' => array( // 视图配置
'enabled' => TRUE, // 开启视图
'config' =>array(
'template_dir' => APP_PATH.'/static/html', // 模板目录
'compile_dir' => 'saemc://templates_c', // 编译目录
'cache_dir' => 'saemc://cached', // 缓存目录
'left_delimiter' => '<{', // smarty左限定符
'right_delimiter' => '}>', // smarty右限定符
'auto_literal' => TRUE, // Smarty3新特性
2012-04-10 11:33:45
#11 47660666
问题解决了 在这留个脚印,希望后面的人能用到:
在SAE上Smarty出问题:
1.确保SP是SAE专版
2.index的配置要正确:
'view' => array(
'enabled' => TRUE, // 开启Smarty
'config' =>array(
'template_dir' => APP_PATH.'/tpl', // 模板目录
'compile_dir' => 'saemc://templates_c', // 编译目录
'cache_dir' => 'saemc://cached', // 缓存目录
'left_delimiter' => '<{', // smarty左限定符
'right_delimiter' => '}>', // smarty右限定符
'auto_literal' => TRUE, // Smarty3新特性
),
),
3.开启Memcache
4.检查语法 限定符
2012-04-10 11:35:24
#12 jake
47660666 发表于 2012-4-10 11:35
问题解决了 在这留个脚印,希望后面的人能用到:
在SAE上Smarty出问题:
1.确保SP是SAE专版
{:soso_e179:}
2012-04-10 11:40:29
#13 诗人的咸鱼
jake 发表于 2012-4-10 11:40
我能说 我都那样做了 还是挂着呢么... memcache 是只要在SAE 设置开关就行了 Speed 不用设置哈? 还是不行啊...
2012-08-23 19:14:42
#14 诗人的咸鱼
诗人的咸鱼 发表于 2012-8-23 19:14
我能说 我都那样做了 还是挂着呢么... memcache 是只要在SAE 设置开关就行了 Speed 不用设置哈 ...
一片空白... 然后echo 可以显示. 模板在本地 也没问题啊... 就是空白啊.
2012-08-23 19:21:56
#15 诗人的咸鱼
jake 发表于 2012-4-10 11:40
又重新覆盖了一遍 好了... 麻烦你了
吐槽一下这个验证码....
2012-08-23 19:41:34
#16 jjf012
建议版主更新到手册里面,刚才我被手册误导了好久。:@
2013-01-14 22:58:56
#17 jake
jjf012 发表于 2013-1-14 22:58
建议版主更新到手册里面,刚才我被手册误导了好久。
mark!
2013-01-15 08:43:46
#18 WCPSOFT
47660666 发表于 2012-4-10 11:35
问题解决了 在这留个脚印,希望后面的人能用到:
在SAE上Smarty出问题:
1.确保SP是SAE专版
首先说明一下,经过测试楼主您的smarty为编译并不是版本问题,而是您没有按照SAE官方开发文档正确配置。@jake
正确配置应该是:
'template_dir' => SAE_TMP_PATH, // 模板存放的目录
'compile_dir' => SAE_TMP_PATH, // 编译的临时目录
'cache_dir' => SAE_TMP_PATH, // 缓存的临时目录
导致的问题:
[table=98%]
[td][tr=rgb(249, 249, 249)][td=180]
说明[/td][td=180]
常量名[/td][/tr]
[tr=rgb(249, 249, 249)][td]SAE临时目录路径[/td][td][/td][/tr]
[tr][td]Access Key[/td][td][/td][/tr]
[tr=rgb(249, 249, 249)][td]Secret Key[/td][td][/td][/tr]
[tr][td]MySQL用户名[/td][td][/td][/tr]
[tr=rgb(249, 249, 249)][td]MySQL密码[/td][td][/td][/tr]
[tr][td]MySQL主库域名[/td][td][/td][/tr]
[tr=rgb(249, 249, 249)][td]MySQL从库域名[/td][td][/td][/tr]
[tr][td]MySQL端口[/td][td][/td][/tr]
[tr=rgb(249, 249, 249)][td]MySQL数据库名[/td][td][/td][/tr]
[tr][td=2,1]
[/td][/tr]
[/table]
2013-01-17 23:47:30
#19 WCPSOFT
jake 发表于 2013-1-15 08:43
mark!
jake,首先说明一下,经过测试smarty为编译并不是版本问题,与speedphp的版本没有关系的,而是楼主没有按照SAE官方开发文档正确配置。
正确配置应该是:
'template_dir' => SAE_TMP_PATH, // 模板存放的目录
'compile_dir' => SAE_TMP_PATH, // 编译的临时目录
'cache_dir' => SAE_TMP_PATH, // 缓存的临时目录
2013-01-17 23:49:49
#20 jake
WCPSOFT 发表于 2013-1-17 23:49
jake,首先说明一下,经过测试smarty为编译并不是版本问题,与speedphp的版本没有关系的,而是楼主没有按 ...
嗯,现在的sae支持多种代替本地读写的方式,所以你的方式和楼上的方式都值得参考。
2013-01-18 03:12:48