0

私は Smarty にまったく慣れていないので、いくつか問題があります。私は PHP クラスを持っています。それを と呼びましょうA。にAは、メソッド call it がMあり、変数を取得して ($var整数値1またはを取得2)、それを HTML ページで使用し、mypage.html別の HTML ページの一部である call it を呼び出しますMyPage.html

同じ方法で、HTML コードを smarty assign で次のように割り当てます。

$this->mySmarty->assign('content', $this->fetch('mypage.html'));

そして、私は表示します:

$this->display('MyPage.html'); 

しかし奇妙なことに、smarty 変数varを PHP 変数に割り当てると、次のvarようになります。

$this->mySmarty->assign('var', $var);

...ページMyPage.htmlは次のものを認識しません:

{if $var==1}<span>blabla<span>{/if}

誰が問題が何であるか知っていますか? それは間違ったスマートな構文ですか?

4

2 に答える 2

0

あなたのコードでは、あなたはそうしているようです

$this->mySmarty->assign('content', $this->mySmarty->fetch('mypage.html'));

変数が割り当てられる前。試してみてください

$this->mySmarty->assign('var', $var);
$this->mySmarty->assign('content', $this->mySmarty->fetch('mypage.html'));
$this->mySmarty->display('MyPage.html'); 

ただし、テンプレートを事前にレンダリングしてから変数に割り当てるのは、やや不自然に感じます。@ddlshackソリューションをチェックして、もっと賢いものを探してください。

于 2012-06-08T22:02:58.870 に答える
0

テンプレートをレンダリングしてから変数に割り当てるよりも、Smartyのinclude関数を使用する方がよいでしょう。

$this->mySmarty->assign('contentTemplate', 'myPage.html');

それで

{include file="$contentTemplate"}

あなたの問題に関しては、コードは正しいので、$varの値はあなたが期待するものであってはなりません。

var_dump($var);
于 2012-06-08T22:04:57.267 に答える