ホームページ  >  記事  >  バックエンド開発  >  Smarty テンプレートの初心者の問題: テンプレート内で未定義の関数が見つかったというプロンプトが表示される

Smarty テンプレートの初心者の問題: テンプレート内で未定義の関数が見つかったというプロンプトが表示される

WBOY
WBOYオリジナル
2016-06-13 13:33:36874ブラウズ

Smarty テンプレートの初心者の質問: ヒント: テンプレート
で未定義の関数が見つかりました テンプレート コード:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->{include file ='header.tpl'}
<form name="oform" action="index.php" method="post" onsubmit="">
     <table border="1" align="center" width="70%" cellpadding="3" cellspacing="0">   
        <caption><h3>{$tableName}<h3></caption>    
          <tr> 
              <td width="20%">姓名:</td><td><input type="string" name="ceshi" {if $wandoujia} value='{$wandoujia}'{/if} /></td>
          </tr>
          <tr>
              <td>测试:</td><td><input type="string" name="ceshi2" /></td>
          </tr>  
          <tr><td colspan="2"><input type="submit" value="查询" /></td></tr>
  </table> 
</form>
{include file ='footer.tpl'}


index.php 呼び出しコード:
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php
require_once dirname(__FILE__) . "\include\common.inc.php";
require_once SR_TEMPLATE . "\TemplatesFunction.php";
     $smarty = $GLOBALS['smarty'];
     $smarty -> assign('title','测试标题'); 
     $smarty -> assign('Version',"2011"); 
     $smarty -> assign('HomePageLink','http://localhost/Matance1.0/'); 
     $smarty -> assign('tableName','标题'); 
    

    
    if(isset($_POST['ceshi2'])){
          $smarty -> assign('wandoujia',$_POST['ceshi2']); 
     }
    $smarty -> display('index.tpl');
?>


つまり、index.tpl テンプレートにフォームを作成します。action="index.php"、index.php は、そうであれば、値

をテンプレートの $wandoujia 関数に渡しますが、実行後は常に次のプロンプトが表示されます:

注意: 未定義のインデックス: D:Program FileswampwwwMantance1 の wandoujia .0TemplateFileTemplatesdefaulttemplates_cda1ad7986fcfc741270ca7b7bdceba8d01b88c26 .file.index.tpl、34 行目
注意: D:Program FileswampwwwMantance1.0TemplateFileTemplatesdefaulttemplates_cda1ad7986fc で非オブジェクトのプロパティを取得しようとしていますfc741270ca7b7bdceba8d01b88c26.file.index.tpl.php 行 34
/>

アドバイスを求める

-----解決策---------
まず、これは定義されたインデックスだけの関数ではありません。
次に、このファイルの 34 行目を見てください。
D:Program FileswampwwwMantance1.0TemplateFileTemplatesdefaulttemplates_cda1ad7986fcfc741270ca7b7bdceba8d01b88c26.file.index.tpl.php
------解決策---------
if(isset($_POST['ceshi2' ] )){
$smarty -> assign('wandoujia',$_POST['ceshi2']);
}

は、wandoujia が割り当てられていない状況を考慮しません。値がありません。それは自然です。または、エラーを報告します。
------解決策---------
エラーレベル番号を 5 または 7 に変更するだけです。誤字脱字は報告されますが、初期に開発した PHP サイトには、当時標準化された方法で記述されていなかったため、無視しても問題ありません。 、しかし、それでも数年間は完璧に動作しました。今では、それを修正するのに怠け者は誰もいません。それは問題ではありません。
------解決策------------------
この NOTICE レベルの問題を修正する必要がある場合は、次のことができます。 PHP コードで POST 送信を判断することに加えて、次のようにします:
if(isset($_POST['ceshi2'])){
$smarty -> assign('wandoujia',$_POST[' ceshi2' ]);
}
POST 送信があるかどうかを判断するには、テンプレートで SMARTY を使用する必要もあります。ある場合は、SMARTY 変数 wandoujia を追加します。この段落に注目してください:

名前:

次のように変更してみてください:

名前:

これは必ずしもこのように書かれているわけではありません。直接 POST 送信する。値テンプレートの出力には 2 つの状況があります。{$smarty.post.ceshi2} は、表示のためにタグに直接挿入されます。送信された値がある場合とない場合の {$smarty.post.ceshi2} の出力の違いを見てください。このようにして、$wandoujia 変数を追加する必要があるかどうかを判断できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。