ホームページ > バックエンド開発 > PHPチュートリアル > Smarty config_load とカスタム関数のエラー解決策

Smarty config_load とカスタム関数のエラー解決策

WBOY
リリース: 2016-06-13 13:31:07
オリジナル
1076 人が閲覧しました

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 は怎么找到它的ですか?
​​
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート