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 変数を追加する必要があるかどうかを判断できます。