のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,908人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ【PHP】 Smarty 【テンプレートエンジン】 第2章

    php覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    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 = :

    確認してからレスすれ


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について