テンプレートファイルの中にJavascriptを書いていて、PHPの変数を使いたいとき
JavaScriptの「{ }」と被るため
{literal}
function hoge() {
{/literal}
window.alert({$hogehoge});
{literal}
}
{/literal}
のように書かなくてはならず、ソースが見にくくなってしまいました。
Smarty.class.php
$smarty->left_delimiter = '<{';
$smarty->right_delimiter = '}>';
のようにデミリタを設定すると、
function hoge() {
window.alert(<{$hogehoge}>);
}
のようにシンプルに書くことができます。
2014年5月20日火曜日
2014年3月21日金曜日
smartyでtruncateを使うと文字化けする件
{$str|truncate:20:"..."}
のようにtruncateを使うと指定した文字数で文字列の切り捨てを行うことができます。
しかし、日本語を入力したときに文字化けする場合があります。
マルチバイト対応させることで文字化けを回避出来ます。
modifier.truncate.phpで
substr,strlenの部分mb_substr,mb_strlenに変更することでマルチバイト対応できる。
のようにtruncateを使うと指定した文字数で文字列の切り捨てを行うことができます。
しかし、日本語を入力したときに文字化けする場合があります。
マルチバイト対応させることで文字化けを回避出来ます。
modifier.truncate.phpで
substr,strlenの部分mb_substr,mb_strlenに変更することでマルチバイト対応できる。
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) { if ($length == 0) return ''; if (mb_strlen($string) > $length) { $length -= min($length, mb_strlen($etc)); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length) . $etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; }}
2014年1月4日土曜日
Smartyで変数の表示が0になる件
Smartyを使ってたら変数が0になっていた。
どうやら配列のキー名に「-(ハイフン)」を使っているとだめらしい。
何やら解決法もあるみたい。
http://babie.hatenablog.com/entry/20060306/p2
ハマりそうなので、DBのカラム名を変えて対応した。
どうやら配列のキー名に「-(ハイフン)」を使っているとだめらしい。
何やら解決法もあるみたい。
http://babie.hatenablog.com/entry/20060306/p2
ハマりそうなので、DBのカラム名を変えて対応した。
2013年12月5日木曜日
Smartyでjqueryを使うときの注意
Smarty使ってると$や{がキャンセルらしい。
拾ってきたコードを使うときには注意が必要だそう。
拾ってきたコードを使うときには注意が必要だそう。
http://curious-everything.com/204-entry.html
登録:
投稿 (Atom)