トップページphp
1001コメント342KB

【PHP】 Smarty 隔離スレ 【テンプレート】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2008/02/02(土) 00:21:09ID:6cKcKeTp
まぬあるhttp://www.smarty.net/manual/ja/
0881nobodyさん2010/02/02(火) 14:54:00ID:???
えっ?
0882nobodyさん2010/02/02(火) 16:28:53ID:???
string:リソースとforが欲しいだけなんだが、Smarty2に入れてくれ
0883nobodyさん2010/02/03(水) 00:29:48ID:???
>>880
互換性はあるとかないとか、
廃止される構文もあるとかないとか
0884nobodyさん2010/02/03(水) 01:26:14ID:???
stringリソースは自分で作れ。

PHPっぽく数学処理出来るのはいいよね。Smarty3。
開発に時間かけ過ぎてて、既に腐り始めている気がするけど。

extend欲しいな。
0885nobodyさん2010/02/05(金) 12:00:27ID:1wZyvV1Q
default_modifiersでescape:htmlやってたらforeachでエラー出るとか{debug}ができないとか
そういうのは最新版では治ってるの?
0886nobodyさん2010/02/05(金) 16:09:07ID:???
debugとescapeプラグインを数行書き換えるだけで治る。
0887nobodyさん2010/02/05(金) 18:17:12ID:???
Smarty3のstringリソースってキャッシュしてくれないのか、ファイルの更新日時とか取得できないから当たり前か・・・
0888nobodyさん2010/02/06(土) 16:55:05ID:???
smartyとquickformの組み合わせでdefault_modifiers escapeするとフォームが全部エスケープされてしまうね
じゃ、nodefaultsにすりゃいいかというと、フォームのユーザが追加できるようにしている場合、
デフォルトの値(フォームのセレクトとか)にエスケープしたい文字があると途端に無理が出る
結局ロジック側でh()するしかなくなる
0889nobodyさん2010/02/09(火) 13:31:36ID:Af+mgrun
Smartyで画像の出力ってできる?
"Content-Type: image/jpeg"的な意味で。
0890nobodyさん2010/02/10(水) 09:26:09ID:???
プラグイン作れば?
0891nobodyさん2010/02/10(水) 11:02:43ID:???
>>889つーか、ここは正攻法でMLに投げるんだ!
0892nobodyさん2010/02/12(金) 16:19:32ID:???
>>889
テンプレートファイルの内容を画像データにすればいいんじゃないかな・・・
0893nobodyさん2010/02/12(金) 21:11:24ID:???
パーサーが変なの拾って壊しちゃうかと
displayやfetchしてる所でget_file_contentするだけだろ
しょーもな
0894nobodyさん2010/02/12(金) 21:12:15ID:???
関数名違うかも
0895nobodyさん2010/02/17(水) 16:31:45ID:???
file_get_contents()だな。
確かにSmartyが有用なケースが思いつかない。
0896nobodyさん2010/02/20(土) 12:34:03ID:???
MTってSmarty使ってるのか
0897nobodyさん2010/02/20(土) 12:44:55ID:???
気のせいか
0898nobodyさん2010/02/20(土) 17:16:25ID:0jUjLrgq
ファイルではなく
変数に格納されたテンプレートを使うために
変数用のリソースプラグインを使って試行錯誤してるのですが
相談させてください。

このリソースプラグインに変数(テンプレートの内容)を渡す方法ですが
2つ思いつきました。

1つは
$hoge = "ここにテンプレートの内容";
$smarty->fetch("var:hoge");

のように変数名を渡して
プラグイン側で グローバル変数の$hogeの内容を取得。
しかしグローバル変数を使うというのがちょっと気になります。

もう1つの案は
$smarty->fetch("var:{$hoge}");
としてテンプレートの内容自体を渡す方法。

しかしこれだと長い名前の中間ファイル(template_cにできるファイル)
が作られてなんだか気持ちが悪いです。

毎回コンパイルでいいので中間ファイルは作られないほうがいいのですが
それもできない感じ。

みなさんはどうしてますか?
0899nobodyさん2010/02/20(土) 22:01:34ID:???
リソースプラグイン側で
グローバル変数じゃなくてSmartyにassignされた変数を見るようにすればいいんじゃねーの?
09008982010/02/24(水) 09:57:22ID:???
>>899
規制でかけなかった・・・

結局Smartyを拡張してプロパティを追加したら
プラグイン側で普通に見れました

>>899
ありがとうございます
なるほど、それは気づきませんでした
そのほうが手軽ですね
0901nobodyさん2010/03/03(水) 01:14:47ID:???
Tenjin使い始めた。smartyより3倍早いらしい。
フレームワークをやったことなかったけど、比較的わかり易い。
0902nobodyさん2010/03/03(水) 16:18:29ID:???

http://www.kuwata-lab.com/presen/LL2007LT.pdf

14-15ページを見た感じだと制御はPHPそのままで
PHPタグ外部分はわざわざechoするのか・・・
0903nobodyさん2010/03/04(木) 15:15:33ID:jG8+9EsN
Smarty3はいつになったら出るんだよ。
0904nobodyさん2010/03/05(金) 09:36:42ID:???
遅い3はいらない
0905nobodyさん2010/03/06(土) 00:22:27ID:3cIJcZyy
Smartyのoutputfilterで文字コードをUTF-8からSJISに変換する処理を入れています。

こんな風に
$smarty->register_outputfilter("filterSjis");

function filterSjis($buff, &$smarty) {
return mb_convert_encoding($buff,"SJIS-win","UTF-8");
}

ブラウザで表示させると頭に「?」が入ってるんだけどこれはなぜでしょうか?
Smarty 2.6.26 PHP 5.3.2 です
0906nobodyさん2010/03/06(土) 01:54:29ID:???
UTF-8テンプレートにBOMが入ってんじゃねーの?
0907nobodyさん2010/03/06(土) 08:38:23ID:???
ありがとう
その通りでした
0908nobodyさん2010/03/06(土) 10:16:09ID:???
自己中マルチはシネよ
0909nobodyさん2010/03/06(土) 11:56:50ID:???
すまんね PHPはあんまり慣れてないんだ
普段はGAEでjavaなんだよ
これあげるからシネとかいわないで
http://mix-tube.appspot.com/
0910nobodyさん2010/03/06(土) 12:20:22ID:???
そういう問題じゃないけど許す
0911nobodyさん2010/03/06(土) 13:54:43ID:???
さらに宣伝かよ
0912nobodyさん2010/03/07(日) 07:30:25ID:???
β8はfinal betaらしいので、次はRC版か
0913nobodyさん2010/03/11(木) 09:30:07ID:???
俺の勉強不足かも知れないんだけど、
cache_lifetimeって以下の仕様じゃないんだね

10秒に設定→10秒経ってるキャッシュファイルは全て削除
0914nobodyさん2010/03/11(木) 17:23:06ID:TZPJnNmb
削除されるわけないだろ。
0915nobodyさん2010/03/12(金) 13:20:51ID:???
じゃ、キャッシュ溜まりまくるけど
どの段階でclear_all_cacheするの?
0916nobodyさん2010/03/12(金) 15:48:13ID:???
>>913
同じく削除されると思うのが普通な気がする
セッション管理みたいに

>>915
必要なら好きなときにどうぞ
0917nobodyさん2010/03/12(金) 17:14:35ID:???
削除というよりは、要求されたページのキャッシュがlife timeより古かったら
再生成(上書き)されると思ってる。
つまり、要求されなきゃそのまま放っておかれる(わざわざ消さない)と。
0918nobodyさん2010/03/12(金) 21:49:30ID:???
マニュアル良く読めw
0919nobodyさん2010/03/13(土) 05:31:12ID:???
>>918
ん?
0920nobodyさん2010/03/13(土) 13:02:36ID:???
cache_lifetime = -1;にしてるオレには関係のない話だな
0921nobodyさん2010/03/13(土) 15:04:04ID:???
負荷だいじょうぶか?
0922nobodyさん2010/03/13(土) 16:11:14ID:???
-1は無期限でキャッシュし続ける
0が毎回作成
CMSみたいに管理画面から更新するなら、
そのタイミングで必要な分だけキャッシュを削除すればいいしね
0923nobodyさん2010/03/13(土) 16:11:51ID:???
×キャッシュし続ける
○キャッシュを使い続ける
でした
0924nobodyさん2010/03/19(金) 17:17:56ID:KC5byG0j
前のほうに出てた変数によるテンプレートについてなんですけど
コンパイルしたときの中間ファイル(templates_cにできるやつ)
を作らないようにはできないでしょうか?
メモリ上で生成みたいな。
0925nobodyさん2010/03/19(金) 17:23:37ID:???
924さんの質問は良い質問ですね
私も気になります
どなたかご教示お願い致します
0926nobodyさん2010/03/19(金) 18:34:41ID:???
出来ないよ。そもそもコンパイルファイル作るから、
Smartyテンプレートに変数を反映できるのに。
0927nobodyさん2010/03/19(金) 19:03:47ID:???
sectionとか使うとコンパイルファイルに複雑なphpが・・・
これをforの代わりに使うのか
09289242010/03/19(金) 20:10:50ID:???
>>926
なるほど納得です
ありがとうございました!
0929nobodyさん2010/03/19(金) 20:39:12ID:???
まぁよく読み込むファイルは、OSが勝手にメモリにいれてくれるから、気にしなくてもいいんじゃね?
0930nobodyさん2010/03/20(土) 13:06:36ID:???
変数テンプレートやってみたけど
コンパイルのときのファイル名が長すぎるってエラーになったぞ?
どうしてんの?
ファイル名固定にすると同時アクセスでやばそうな気がするし
0931nobodyさん2010/03/23(火) 11:45:21ID:???
どんだけ長い変数名にしてるんだw
0932nobodyさん2010/03/24(水) 02:39:29ID:???
>ファイル名固定にすると同時アクセスでやばそうな気がするし 

これの意味がわからん・・・
0933nobodyさん2010/03/24(水) 10:07:49ID:???
smarty使い始めた初心者の方いますか?
0934nobodyさん2010/03/24(水) 12:08:34ID:???
いたら何か教えてくれるの?
0935nobodyさん2010/03/24(水) 13:29:48ID:???
はい、教えますよ
0936nobodyさん2010/03/24(水) 14:41:59ID:9Owlir6z
>>935
default_modifiersの挙動がおかしいっす。
出力するものすべてにescapeをかけたいが、配列があるとうまくいかないようです。
あとdebugも同時使用不可。
いじくって直したいが、どこをどういじくるべきですか?
0937nobodyさん2010/03/24(水) 15:22:58ID:???
俺も2日前からここに出入りしているSmarty初心者だが、
このスレを default_modifiers で検索するくらいはしたほうがいいと思うぞ・・・
0938nobodyさん2010/03/24(水) 15:40:56ID:???
>>937
ホントだ〜
すいませんでした。
0939nobodyさん2010/03/26(金) 10:19:43ID:LJ/oTT1k
foreachで回す変数を場合によって変えたい。
{if $hoge == 0}
 {assign var="var" value="a.b"}
{else}
 {assign var="var" value="a}
{/if}
こんな風に。

{foreach from=$c[$var] item=item}
とすると、elseの場合は上手くいくんだけど、$hoge == 0の時にうまくいかない。
もう一個階層があるのをどうにかしないといけないと思う。
どうしたら良いか誰かご教授願えますか。
09409392010/03/26(金) 11:42:31ID:LJ/oTT1k
PHPの方で場合分けにより階層を浅くしました。
0941nobodyさん2010/03/27(土) 04:53:37ID:???
{if $hoge == 0}
 {assign var="var" value=$c.a.b}
{else}
 {assign var="var" value=$c.a}
{/if}

{foreach from=$var item=item}

じゃだめなのかい。
0942nobodyさん2010/03/27(土) 18:31:55ID:???
今時Smartyも無いだろ。
どれだけ時代遅れだよ。
0943nobodyさん2010/03/27(土) 18:53:46ID:???
じゃあ何が有るんだ
0944nobodyさん2010/03/27(土) 19:54:09ID:???
>>942
お勧め教えて下さい♪
0945nobodyさん2010/03/27(土) 20:27:45ID:???
Smarty隔離スレにきて言うあたりが面白い。

多分、Smartyすら理解できなくてファビョっちゃったんだろうな。
0946nobodyさん2010/03/27(土) 20:40:56ID:???
>>942さんまだー?
通は何を使うのか教えてくださいよ〜ねえ〜
0947nobodyさん2010/03/27(土) 20:45:23ID:???
お薦め?本物のバカなのかこいつはw
PHP自体がテンプレートになってるんだから
PHPそのまま使うに決まってんだろ。
0948nobodyさん2010/03/27(土) 20:46:17ID:???
>>946
通は自作のフレームワークだろw
0949nobodyさん2010/03/27(土) 20:46:54ID:uuG3/ncY
フイタからバカ晒し上げ

947 名前:nobodyさん[sage] 投稿日:2010/03/27(土) 20:45:23 ID:???
お薦め?本物のバカなのかこいつはw
PHP自体がテンプレートになってるんだから
PHPそのまま使うに決まってんだろ。
0950nobodyさん2010/03/27(土) 22:07:06ID:???
>>949
こいつwww
本物だwww

Smartyは使い心地いいですか?www
超雑魚wwwww
0951nobodyさん2010/03/27(土) 22:16:56ID:???
まだそんな事言ってる奴いたのかww

PHP自体がテンプレートww
下手したらMVC分けすれしてねーんじゃね?w
0952nobodyさん2010/03/27(土) 22:33:37ID:uuG3/ncY
>>950先生はPHP自体がテンプレートであるとおっしゃってますあげ
0953nobodyさん2010/03/27(土) 22:43:47ID:???
PHPは間違いなくテンプレートエンジンそのものなのだがw
Smarty信者はPHPを知らない半可通が多いから面白いね。

あと、Smarty信者はMVC理解してないだろw
そもそもSmartyってぜんぜんMVCじゃないじゃん。
反論あるならSmartyにおけるMVCというものを解説してみwwww
0954nobodyさん2010/03/27(土) 22:47:39ID:???
まぁ、価値が判らない人には不要だね
テンプレート編集権限も与えたくないが
0955nobodyさん2010/03/27(土) 22:50:44ID:???
SmartyはVだけだよー
MとかCは別途用意してください
0956nobodyさん2010/03/27(土) 22:50:54ID:???
おやおや、こわいこわい。Smartyスレでガキが暴れとるね
0957nobodyさん2010/03/27(土) 23:01:27ID:???
Smarty信者の恥ずかしい主張
・PHPはテンプレートエンジンではない
・PHPではMVCできないが、SmartyではMVCできる
・SmartyはVしか出来ないので、MとCは別途用意する
・変なコピペでPHPユーザーを馬鹿にして悦に浸るガキの集団である

SmartyがPHPで書かれてるって知ってた?w
0958nobodyさん2010/03/27(土) 23:15:56ID:???
なんだ、釣り人か
0959nobodyさん2010/03/28(日) 00:12:24ID:???
PerlとかRubyみたいなテンプレート機能がないような言語が
テンプレートエンジンを使うのは分かる。
が、PHPはそれ自身がテンプレートの機能を持っているので、
Smartyがとっても阿呆に思える。

CakePHPやsymfonyなどのフレームワークのビュー層は
テンプレートエンジンを使わずに
生PHPを使うような前提になっている。
(当たり前のことだよね)

ただ、PHPのテンプレートとしての機能は
非常に貧弱なのでSmartyのようなアホライブラリが出てきてしまったのも
しょうがないとは思うがな。

PHPにもJavaの標準ビュー層であるJSPのように
もうちょっとマシな機能が揃っていれば良かったのにね。
09609592010/03/28(日) 00:23:05ID:???
ちなみにこういうアホ共は→>>949>>954
そこら辺のことがまったく分かっていないので
今後まともな技術者になることは有り得ないと思うね。

ビュー層の話なんか本当に底辺の話なので
本当は雑魚共と議論なんかしたくもないんだw

関係無いけどこいつらDIとかORMとかのロジック層、DAO層とかの
アプリケーションの本質的な部分の技術をちゃんと理解してるんだろうか?
ムリカナァw
0961nobodyさん2010/03/28(日) 00:27:47ID:???
>>959-960
アホはこのスレで暴れてるお前
0962nobodyさん2010/03/28(日) 00:54:30ID:???
>>961
情けないなぁ。反論しろよ。まるで俺がいじめてるみたいじゃないか。
どうしようもないね。
何故自分がSmartyを使ってるのかも理解してないのか?
ただ「これいいらしいよ」って人に言われて使ってるだけなんだろうな。
だから反論しようにも出来ない。信念とかポリシーとか無いから。
スレタイに「隔離」って付いてる意味が分かったよ。
0963nobodyさん2010/03/28(日) 01:13:19ID:???
>>962
煽っている最中すんません。
自分はホント初心者なんですけど、
ソースが見やすくなる、っていう理由だけで使うのはダメですか?
0964nobodyさん2010/03/28(日) 01:23:29ID:???
>>949 >>952 >>954 >>955みたいな煽りとかアホは、
迷惑だからこのスレに書き込まないでほしい
0965nobodyさん2010/03/28(日) 01:50:45ID:???
急に活気が出てきたな
まだまだ廃れてなかったってことか
0966nobodyさん2010/03/28(日) 04:29:49ID:???
>>963
複数の人間で作るプロダクトだと大抵デザインとプログラムが分かれる
デザイナーに直接書いてもらえる可能性が高い

データ生成とHTML生成で分離するから問題が起きたときに切り分けしやすい

エスケープ処理などを一括で行えるから楽

何より言う様に構造が把握しやすい=ソースが見やすい
0967nobodyさん2010/03/28(日) 06:00:49ID:???
どーでもいいから、Smartyサイトの説明読んでから出直してこいや。
http://www.smarty.net/manual/ja/what.is.smarty.php

PHPがテンプレートエンジンとして使えるからSmarty糞とか言ってる低脳共よ…
美しくロジックを切り分けるためのライブラリでしかない事に気がつけや。

0968nobodyさん2010/03/28(日) 10:08:58ID:???
>>960
なんだオメー
あげられてさらし者にされたのが悔しかったと言え
0969nobodyさん2010/03/28(日) 10:40:14ID:???
>>967
お前みたいな奴がいちいちほざくからスレが荒れる。
消えろ。二度と書き込むな。
0970nobodyさん2010/03/28(日) 17:03:36ID:???
>>963
ソースが多少きれいになるとかいう妄想にとりつかれて
それ自身がテンプレートエンジンであるPHPから
わざわざテンプレートエンジンを使って表示するとか
これほど滑稽なことはない。

>>966
>複数の人間で作るプロダクトだと大抵デザインとプログラムが分かれる
>デザイナーに直接書いてもらえる可能性が高い
>データ生成とHTML生成で分離するから問題が起きたときに切り分けしやすい

妄想も大概にしとけや。
君、本当にWeb制作の仕事したことあるの?
俺は今まで色々な現場で色々な言語でWebの仕事をしてきたが、
デザイナーが直接ビュー層をいじることなんてありえない。
デザイナーが作ったHTMLをビューに変換するのはプログラマーの仕事。

>エスケープ処理などを一括で行えるから楽

なんのエスケープ処理か知らんが、
フレームワーク使ってればFilterとか色々とあるんだから
それでやればいいじゃん。

>何より言う様に構造が把握しやすい=ソースが見やすい

Smartyのコードが入ったHTMLが見やすい?
妄想にとりつかれてんな。
頭冷やしてもう一度よーく見てみろ。
生PHPで書かれたHTMLと比べてそんなに変わるか?
09719702010/03/28(日) 17:09:48ID:???
あと、一言。

PHPのテンプレートとしての機能は非常に貧弱なので
Smartyのようなテンプレートエンジンが出現しちゃうのも
しょうが無いとは思ってる。

こればっかりは言ってもしょうが無いんだけど、
PHPにJSP2.0相当の機能があれば
こんなことは起こらなかった。
Smarty使ってるお前らも是非JSP2.0について
少しは知ってみてくれ。

0972nobodyさん2010/03/28(日) 17:11:20ID:???
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0973nobodyさん2010/03/28(日) 17:18:54ID:???
>>970
>生PHPで書かれたHTMLと比べてそんなに変わるか?
ぜんぜん違うね
Smartyみたいにロジックとビューが分離できてないコードがいかに多いことか

一定のルールを作って自由な書き方をさせないところに意味があるんだよ
それぞれの開発が決めたオナニーなルールで仕様書やソース追うより、
Smarty使ってるって書いてあるだけでだいたいのルールの想像がつく

webアプリの仕事をいろいろやってきてこんなことも気づかないなんて
アホすぎる
0974nobodyさん2010/03/28(日) 17:22:48ID:???
>Smartyみたいにロジックとビューが分離できてないコードがいかに多いことか
言いたいことが逆になった

Smartyみたいにロジックとビューが分離できてるコードがいかに少ないことか
0975nobodyさん2010/03/28(日) 19:18:58ID:???
>>973
>Smartyみたいにロジックとビューが分離できてるコードがいかに少ないことか

お前はSmartyを使えばビューにロジックを混入させないことができるのか?
すげーな。分岐の処理もループの処理も記述せずにビューを書き上げることができるのか?
妄想ぬかすなカスが。

>一定のルールを作って自由な書き方をさせないところに意味があるんだよ
>それぞれの開発が決めたオナニーなルールで仕様書やソース追うより、
>Smarty使ってるって書いてあるだけでだいたいのルールの想像がつく

Smartyが決めたオナニールールにしたがってると
Smartyの仕様を知らない人はソースが読めないよねぇ。

そんなことも気づかないなんてアホ過ぎるw
0976nobodyさん2010/03/28(日) 19:25:20ID:???
>>975
まともな反論ができなくて壊れたなw
これがこいつの限界
0977nobodyさん2010/03/28(日) 19:34:29ID:???
>>975

>お前はSmartyを使えばビューにロジックを混入させないことができるのか?
デザインを構成するためのループや分岐処理とロジックを混同してないかな?

>Smartyが決めたオナニールールにしたがってると
>Smartyの仕様を知らない人はソースが読めないよねぇ。
その為の分離ですよ〜
0978nobodyさん2010/03/28(日) 19:40:52ID:???
>お前はSmartyを使えばビューにロジックを混入させないことができるのか?
>すげーな。分岐の処理もループの処理も記述せずにビューを書き上げることができるのか?

これはないわ
0979nobodyさん2010/03/28(日) 21:00:02ID:???
>>976
壊れてるのはお前のオ・ツ・ム

>>977
>デザインを構成するためのループや分岐処理とロジックを混同してないかな?

混同してねーよ。
生PHPでデザインとロジックの分離が出来ないとか訳の分からん言ってるから
そっちが混同してると思ったんだよ。

>その為の分離ですよ〜
意味不明
0980nobodyさん2010/03/28(日) 22:14:41ID:NiX4hAxZ
フレームワークもテンプレートエンジンもろくに使いこなせないのかWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

負け犬の遠吠えさらし上げ!
レス数が950を超えています。1000を超えると書き込みができなくなります。