私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【PHP】 Smarty 【テンプレートエンジン】 第2章
php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
デザイナのレベルに合わせて、加工済変数をassignするなり、プラグインを作るなりすればいい。
WordPressやMTのテンプレートに比べれば、Smartyの基礎なんて超簡単な部類だろう。
近年ではクライアントサイド(JS)で動的にページを生成する手法がメジャーになっているので、
変数や制御構文を理解出来ないデザイナは、完全に時代遅れだし、
それに合わせて設計するのが当たり前だとは思わない方が良い。
WordPressやMTのテンプレートに比べれば、Smartyの基礎なんて超簡単な部類だろう。
近年ではクライアントサイド(JS)で動的にページを生成する手法がメジャーになっているので、
変数や制御構文を理解出来ないデザイナは、完全に時代遅れだし、
それに合わせて設計するのが当たり前だとは思わない方が良い。
制御構造が理解できれば
そもそもテンプレートエンジンなんて使う必要ないじゃん
そもそもテンプレートエンジンなんて使う必要ないじゃん
<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側をどうしてテンプレート側ではどうしたらいいのでしょうか?
<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側をどうしてテンプレート側ではどうしたらいいのでしょうか?
> 以下のような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はやっぱいらないなとお帰りになるわけだ
> 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はやっぱいらないなとお帰りになるわけだ
でも予約語に{}を選ぶのはやっぱ良くないと思うわ
なぜ<$>にしなかったし
やっぱxml形式のほうがコードが綺麗に見える
なぜ<$>にしなかったし
やっぱxml形式のほうがコードが綺麗に見える
デザイナーてもピンキリだからな
ビジュアルプロデュースだけからHTMLとCSSゴリゴリ
目の前の戦力を最大限利用する努力、調整をするしかあるまい
ビジュアルプロデュースだけからHTMLとCSSゴリゴリ
目の前の戦力を最大限利用する努力、調整をするしかあるまい
Smarty2までは<%%>とか<{}>とかにしてたけど、
Smarty3からは{}で使ってる。全く問題無い。
>>862
それ言ったらキリが無いが、
それ程低レベルなデザイナならPHPよりSmarty使わせる方が楽だし、なにより安全じゃね?w
Smarty3からは{}で使ってる。全く問題無い。
>>862
それ言ったらキリが無いが、
それ程低レベルなデザイナならPHPよりSmarty使わせる方が楽だし、なにより安全じゃね?w
>>865
3の公式マニュアル見れ
3の公式マニュアル見れ
新規は3にしてるよ。特に問題ない。
PHP5系なら選ばない理由は特に無いな。
PHP5系なら選ばない理由は特に無いな。
smarty2を使っています
修飾子プラグインを作ったんですが、テンプレートファイル内で
以下のようにプラグインに渡す引数にNULLを指定したらそのNULLが文字列として処理されます
{$value|myplugin:NULL}
というか、引数が''で囲まなくても文字列として処理されてしまいます
これが正常な処理なんでしょうか?
修飾子プラグインを作ったんですが、テンプレートファイル内で
以下のようにプラグインに渡す引数にNULLを指定したらそのNULLが文字列として処理されます
{$value|myplugin:NULL}
というか、引数が''で囲まなくても文字列として処理されてしまいます
これが正常な処理なんでしょうか?
>>869
yes
yes
PHP自体テンプレート言語なのに、Smartyの思想ってよくわからん。
主流なフレームワークは簡易テンプレートを含むはずだし、
デザイン優先の単純なページでも、今はAJAXでJavaScriptくらい使うんだろ?
主流なフレームワークは簡易テンプレートを含むはずだし、
デザイン優先の単純なページでも、今はAJAXでJavaScriptくらい使うんだろ?
>>872
つ公式サイト
つ公式サイト
とりあえず、phpとJavaScriptは別として評価しろ。
Phpの文法が合っててもjavascriptがあってるとは限らん。
まず、生成されたhtmlソースをみろ。
Phpの文法が合っててもjavascriptがあってるとは限らん。
まず、生成されたhtmlソースをみろ。
そっか、ちょっとボケてました
もう少し考えてみます、スレ汚しすみませんでした
もう少し考えてみます、スレ汚しすみませんでした
解決しました。が、凄く低レベルな気がします
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>
こんな感じです。正直、もっとマシな方法があるのではと思います
引っ張って申し訳ないのですが、自分はこうやってるという方法があれば
良かったら教えてください。よろしくお願いします
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
配列を配列のまま渡して処理したいんです
(そうすることで解決する緊急の課題があるわけじゃないんですが)
上で書いたやり方は何か力技過ぎて美しくないような
たとえばDBへのクエリの返り値をテンプレートに表示する場合
名前は{$rs.name}です って感じにやるけど、同じ$rsをjavascriptで処理する時だけ
PHPでああいう形に整形して渡さざるを得ないというのはすっきりしないというか
わがまま言ってすみません
配列を配列のまま渡して処理したいんです
(そうすることで解決する緊急の課題があるわけじゃないんですが)
上で書いたやり方は何か力技過ぎて美しくないような
たとえばDBへのクエリの返り値をテンプレートに表示する場合
名前は{$rs.name}です って感じにやるけど、同じ$rsをjavascriptで処理する時だけ
PHPでああいう形に整形して渡さざるを得ないというのはすっきりしないというか
わがまま言ってすみません
多次元配列を登録してテンプレートでforeachネストや条件分岐って不親切ですかね?
出力する数が固定なら登録する段階で単体の変数にわけてしまったほうがいいんでしょうか?
出力する数が固定なら登録する段階で単体の変数にわけてしまったほうがいいんでしょうか?
>>889
ああ、まあ意味的には定数ですね。すんません。
ああ、まあ意味的には定数ですね。すんません。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- 【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
トップメニューへ / →のくす牧場書庫について