0

私はおそらくこれを実際よりも難しくしていますが...私のエラー、結果はありません! フォームが送信される前に表示されます。Smarty テンプレートでサーバーからのポストバックを確認する方法はありますか?

{foreach from=$book item=row}
{$row.DESCRIPTION}
{foreachelse}
{if ($postback) == "thisvalue"}
Error, no results!
{/if}
{/foreach}

私は自分のフォームでこれを試しました(どちらもうまくいきませんでした):

<input type="hidden" type="text" name="postback" value='thisvalue'>

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$postback = $_POST['postback'];
$tpl->assign("postback", $postback);
}
4

1 に答える 1

0

post-data の値を で直接確認できます。{$smarty.post.postback}これは、PHP subegglobal と同等です$_POST['postback']。ただし、この機能の Smarty ドキュメント ページには次のように記載されています。

Smarty は便宜上、PHP スーパー グローバルへの直接アクセスを提供しますが、注意して使用する必要があります。スーパー グローバルに直接アクセスすると、基になるアプリケーション コード構造がテンプレートと混在します。テンプレート変数に特定の必要な値を割り当てることをお勧めします。

あなたの場合、おそらくどこかの PHP コードで「ポストバック」(つまり、フォーム送信) を処理し、その処理の結果を Smarty に渡して表示します。フォーム送信が発生したかどうかを判断し、送信された入力を検証する必要があるのは、その PHP コードです (たとえば、フィールドが空白のままだったのか、結果が返されなかったものを単に検索したのか?)。その検証の結果は追加の変数として Smarty テンプレートに渡され、どのメッセージを表示する必要があるかを決定するために使用されます。

于 2013-07-27T22:08:10.230 に答える