元スレ【PHP】 Smarty 【テンプレートエンジン】 第2章
php覧 / PC版 /みんなの評価 :
851 = :
なんで合わせるって言葉が出るんだよ
852 = :
デザイナのレベルに合わせて、加工済変数をassignするなり、プラグインを作るなりすればいい。
WordPressやMTのテンプレートに比べれば、Smartyの基礎なんて超簡単な部類だろう。
近年ではクライアントサイド(JS)で動的にページを生成する手法がメジャーになっているので、
変数や制御構文を理解出来ないデザイナは、完全に時代遅れだし、
それに合わせて設計するのが当たり前だとは思わない方が良い。
853 = :
制御構造が理解できれば
そもそもテンプレートエンジンなんて使う必要ないじゃん
854 = :
>>853
無知を晒す前に5000回くらいテンプレートエンジンの意義と、
Smartyの思想を読んでから出直した方がいい。
855 = :
<table>
<tr>
<td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td>
</tr>
<tr>
<td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td><td>$db['img'][N]<br>$db['img_name'][N]</td>
</tr>
<tr>
<td>$db['img'][N]<br>$db['img_name'][N]</td><td colspan="2">$db['img'][N]<br>$db['img_name'][N]</td>
</tr>
</table>
こんなソースを吐くにはどのようにデザインしたらいいですか?
Nはインデックスでforeachでまわします。
assign側をどうしてテンプレート側ではどうしたらいいのでしょうか?
857 = :
> 以下のようなPHPコードが
> echo '<html>';
> echo '<body>';
> echo "<p>$msg</p>";
> echo '</body>';
> echo '</html>';
> このように書けます
> <html>
> <body>
> <p>{$msg}</p>
> </body>
> </html>
こういうアホな説明を最初にされると使う気も起きなくなるな
<html>
<body>
<p><?=$msg;></p>
</body>
</html>
でおkってなってSmartyはやっぱいらないなとお帰りになるわけだ
859 = :
でも予約語に{}を選ぶのはやっぱ良くないと思うわ
なぜ<$>にしなかったし
やっぱxml形式のほうがコードが綺麗に見える
860 = :
書き直せば<>に出来るよ
861 = :
まぁそうなんですけどね
862 = :
デザイナーてもピンキリだからな
ビジュアルプロデュースだけからHTMLとCSSゴリゴリ
目の前の戦力を最大限利用する努力、調整をするしかあるまい
864 = :
Smarty2までは<%>とか<{}>とかにしてたけど、
Smarty3からは{}で使ってる。全く問題無い。
>>862
それ言ったらキリが無いが、
それ程低レベルなデザイナならPHPよりSmarty使わせる方が楽だし、なにより安全じゃね?w
865 = :
みんなSMARTY3使ってるの?
2から3にしたらトラブったとかない?
866 = :
俺もそれが心配で2から移行してない
867 = :
>>865
3の公式マニュアル見れ
868 = :
新規は3にしてるよ。特に問題ない。
PHP5系なら選ばない理由は特に無いな。
869 :
smarty2を使っています
修飾子プラグインを作ったんですが、テンプレートファイル内で
以下のようにプラグインに渡す引数にNULLを指定したらそのNULLが文字列として処理されます
{$value|myplugin:NULL}
というか、引数が''で囲まなくても文字列として処理されてしまいます
これが正常な処理なんでしょうか?
871 = :
>>869
yes
872 = :
PHP自体テンプレート言語なのに、Smartyの思想ってよくわからん。
主流なフレームワークは簡易テンプレートを含むはずだし、
デザイン優先の単純なページでも、今はAJAXでJavaScriptくらい使うんだろ?
873 = :
>>872
つ公式サイト
877 = :
サーバサイド言語とクライアントサイド言語分かってる?
878 = :
とりあえず、phpとJavaScriptは別として評価しろ。
Phpの文法が合っててもjavascriptがあってるとは限らん。
まず、生成されたhtmlソースをみろ。
880 = :
解決しました。が、凄く低レベルな気がします
jsでの配列の定義部分を丸ごとPHPで記述して変数化&assignし、
それを<script></script>の中に入れるという方法です
//php
$myAry = "new Array('a','b','c');";
$this->view->myAry = urlencode($myAry);
//テンプレート
<script type="text/javascript">
jsAry = {$myAry|urldecode}
{literal}
for(var i in jsAry){
alert(jsAry[i]);
}
{/literal}
</script>
こんな感じです。正直、もっとマシな方法があるのではと思います
引っ張って申し訳ないのですが、自分はこうやってるという方法があれば
良かったら教えてください。よろしくお願いします
881 = :
「マシ」の基準は?
882 = :
>>881
配列を配列のまま渡して処理したいんです
(そうすることで解決する緊急の課題があるわけじゃないんですが)
上で書いたやり方は何か力技過ぎて美しくないような
たとえばDBへのクエリの返り値をテンプレートに表示する場合
名前は{$rs.name}です って感じにやるけど、同じ$rsをjavascriptで処理する時だけ
PHPでああいう形に整形して渡さざるを得ないというのはすっきりしないというか
わがまま言ってすみません
883 = :
一番手っ取り早いのはjsonかな。
884 = :
一番スマートなのはAjaxかな
885 = :
>>883,884
ありがとうございました
やっぱりそのへんの技術を使うことになるんですね
勉強してみます。ありがとうございました
886 = :
多次元配列を登録してテンプレートでforeachネストや条件分岐って不親切ですかね?
出力する数が固定なら登録する段階で単体の変数にわけてしまったほうがいいんでしょうか?
887 = :
そりゃ君の設計次第
889 = :
defineって定数じゃ・・・
891 = :
>>889
ああ、まあ意味的には定数ですね。すんません。
892 = :
はぁ?意味的でなくとも定数でしかないわボケ
894 = :
yum使える環境ならwgetでも取ってこれるさ
895 = :
>>894
どうもです、結局ftpしてしまいましたがwgetてのも試してみます
rootとってるなら出来た方が得ですね
898 = :
2では@が付いていたとかいうオチだったりして
899 = :
>>897
いやー、でもsmartyのforeachに渡してる変数の数よりエラーの数が多いんですよね
どうやらsmarty_internal_compile_private_print_expression.phpの内部処理からたどっていくしかないか。。
>>898
そうなのかな、いちおうそのへんも確認してみます
ありがとうございました
900 = :
確認してからレスすれ
みんなの評価 :
類似してるかもしれないスレッド
- 【PHP】 Smarty 隔離スレ 【テンプレート】 (1001) - [48%] - 2010/3/28 11:16 ○
- 【PHP】Laravel【フレームワーク】 Part.11 (870) - [43%] - 2022/8/28 15:45
- 【PHP】Laravel【フレームワーク】 Part.2 (917) - [43%] - 2019/9/10 9:15
- 【PHP】Laravel【フレームワーク】 Part.3 (983) - [43%] - 2021/2/12 4:00
- 【PHP】Laravel【フレームワーク】 Part.12 (314) - [43%] - 2023/1/30 18:45
- 【PHP】Laravel【フレームワーク】 Part.4 (460) - [43%] - 2021/4/4 4:00
トップメニューへ / →のくす牧場書庫について