スレッド表示 | フラット表示〕 全トピック 920 件中 40 番目 次≫ ≪前

smartyの "===" について

created: 2008-08-14 18:06 | modified: 2008-08-16 11:36 | reply: 2

[4218] smartyの "===" について

user: volks | created: 2008-08-14 18:06
こんにちは、volksです。
smartyで不明な点がありまして、質問させtください。

smartyのヘルプを見ていて、条件演算子の"==="がphpと同等と書いてあったのですが、どうも私の想定とは違う判定が返ってくるのです。
http://www.smarty.net/manual/ja/language.function.if.php


phpで、
-----------
$suji = 11;
$moji = "11";
var_dump($suji===$moji);
-----------
こうすると、bool(false) を返すと思うのですが、このあと
smartyへ値を渡して、

-----------
$suji = 11;
$moji = "11";
$this->assign('suji',$suji);
$this->assign('moji',$moji);
-----------

テンプレート側で、
-------------
{if $suji === $moji}等しい{else}等しくない{/if}
-------------

とした場合に、phpと同じであれば、「等しくない」を返してくれるの
だろうと思っていたのですが、実際には「等しい」が返ってきました。
テンプレート側では「数値」や「文字列」の判断できないのでしょうか?
reply: 4220 返信 編集 削除

[4220] Re. smartyの "===" について

user: ゆうじ | created: 2008-08-16 01:37
こんばんわ。

test.tpl
{if $suji === $moji}等しい{else}等しくない{/if}

test.php
<?php
define('SMARTY_DIR', 'D:/home/include/Smarty/libs/');
require(SMARTY_DIR.'Smarty.class.php');

$smarty = new Smarty;

$smarty->assign('suji', 11);
$smarty->assign('moji', "11");

$smarty->display('test.tpl');
?>

上記のコードを PHP5.2.6 + Smarty 2.6.19 で試したところ
「等しくない」が表示されました。型判別してるようです。

assign() のところが $this になってますが
Smartyの子クラスの中でassignしてるってことでしょうか。
Parent: 4218  reply: 4221 返信 編集 削除

[4221] 原因が判明しました。有難うございます。

user: volks | created: 2008-08-16 11:36
volksです。
ゆうじさん申し訳ありません。

原因が判明しました。
原因は自分のフレームワーク内で$default_modifiersに"escape"を追加して
しまっていた事でした。

ですので、$default_modifiersをはずすか、
$moji|smarty:nodefaults とすることで、問題なく動作しました。

お手数おかけして本当に申し訳ないです。
もう少し視野を広くしてテストしていけるよう心がけていきます。
ありがとうございました。
Parent: 4220  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 40 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑