Smarty config_load と自定関数数 报错
temp.tpl
HTML コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->{config_load file="../configs/a.conf"}
{#s#}
ログイン後にコピー
a.conf
HTML コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->s='测试测试'
ログイン後にコピー
重大なエラー: C:wampwwwsmartylibssyspluginssmarty_internal_resource_file.php:68 でメッセージ「設定ファイル '../configs/a.conf' を読み取れません」を含む例外 'SmartyException' がキャッチされませんでした。スタック トレース: #0 C:wampwwwsmartylibssyspluginssmarty_config_source.php( 86): Smarty_Internal_Resource_File->getContent(Object(Smarty_Config_Source)) #1 C:wampwwwsmartylibssyspluginssmarty_internal_config_file_compiler.php(81): Smarty_Config_Source->get('content') #2 C:wampwwwsmartylibssyspluginssmarty_internal_config.php(1) 89): Smarty_Internal_Config_File_Compiler->コンパイルソース(オブジェクト(Smarty_Internal_Config)) #3 C:wampwwwsmartylibssyspluginssmarty_internal_config.php(214): Smarty_Internal_Config->compileConfigSource() #4 C:wampwwwsmartytemplates_c187938f6ec55068ed23f0f2de8d126b1ae3149c7。 file.temp.tpl.php(36): Smarty_Internal_Config->loadConfigVars(NULL, 'local') #5 C:wampwwwsmartylibssyspluginssmarty_internal_templatebase.php(180): content_4fb7f6591b8ab2_26457252(Object(Smarty_Internal_Template)) #6 C:w in C:wampwwwsmartylibssyspluginssmarty_internal_resource_file.php 行 68
自定义関数
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><?php
require_once './libs/Smarty.class.php';
$smarty=new Smarty;
function myfun($args){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="测试";
}
return $str;
}
$smarty->register_function("doloop","myfun");
$smarty->display("temp.tpl");
?>
ログイン後にコピー
temp.tpl
HTML コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->{doloop times="5"}
ログイン後にコピー
报错
致命的なエラー: キャッチされない例外「SmartyException」と「不明なメソッド「register_function」の呼び出し」というメッセージ。 in C:wampwwwsmartylibssyspluginssmarty_internal_templatebase.php:806 スタック トレース: #0 [内部関数]: Smarty_Internal_TemplateBase->__call('register_functi...', Array) #1 C:wampwwwsmartysmarty.php(62): Smarty->register_function( 'doloop', 'myfun') #2 {main} が C:wampwwwsmartylibssyspluginssmarty_internal_templatebase.php の 806 行目でスローされました
我从smarty官方网站上下了Smarty 3.1.8 [Smarty-stable.zip] 2 月 20 日、2012 文件啊
stableこの单词は稳定的意思我就下了这个包解压後我把里面的libs文件夹贝到我的www/smarty目录下,
其它像在temp.tplモジュール板里実行中{$smarty.server.SERVER_ADDR}この句は通常の表示が可能で、実行上でのconfig_loadと独自定義関数は実行されません
------解決策- -------------------
3.0 は以前、register_function を使用して実行され、新しいメソッドregisterPlugin が使用されていました。
$smarty->registerPlugin("function","demo", "demotest") ;;//制定タイプ、ここで制定は関数数调用、指定モジュール関数名およびphp関数名
function Demontest($params) {
extract($params);//获取パラメータa与b了
echo $a.$b;//输出
}
模板写法:
{demo a=”2″ b=”test”}
输出:2test
もしかしたら、モジュールパネルで {config_load} を使用することも可能ですか?
------解解案---------
啊,config_load出错也解决了
我在temp.tplモジュール板中直接写出{config_load file="a.conf"}
在temp.tpl文件新建了configs文件夹,并掴a.conf放散文件夹里面,
奇怪的,我不指定a.conf在configs文件夹里啊,它是怎么到達的?
总因该在temp.tpl写成{config_load file=".. /configs/a.conf"}これ对啊,可以样要报错
怎么回事?
smarty3.0 は怎么找到它的ですか?