トップページphp
981コメント365KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/03/29(月) 14:41:04ID:???
Smarty は PHP のためのテンプレートエンジンです。
具体的に言うと、php のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。
これは、プログラマーとテンプレートデザイナーの役割が異なり、
これらの役割を違う人間が受け持っている場合に最適だと言えます。
0010nobodyさん2010/04/09(金) 05:43:47ID:???
>>9
そんなに真っ赤な顔をして、学校で何か辛い事でもあったのかい?

え、新しいクラスで友達が出来ないのは何故かって?

ふふふ…聡明な君ならもう答えは解っているんだろう?

そう!
Smartyを使っていないからだよ!

勉強も部活も、恋だってAnything OK!!
なりたい自分になれる、それがSmartyだよ。

え?高いんじゃないかって?ふふふ…心配無用さ!
驚くことにSmartyはその全てが無料なんだ。

つまり…そう!!
お小遣いは全て君の大好きなHENTAI GAMEに注力できるんだ。

どうだい、とてもCoolだろ?

さぁ今すぐ http://www.smarty.net/ にAccessしてSuccessしようぜ!

サンキューベイベー!
0011nobodyさん2010/04/09(金) 13:20:37ID:???
なにこの寒い自演
0012nobodyさん2010/04/09(金) 23:13:48ID:???
Smartyは必要のない無駄ライブラリ。
Ver3では字句解析・構文解析までしちゃって無駄の上乗せw
0013nobodyさん2010/04/10(土) 02:36:00ID:???
自分の理解出来ない事はすべて無駄な事ですよね。わかりますわかります。
0014nobodyさん2010/04/10(土) 11:01:47ID:???
速度が低下しちゃってるのはどうしようもないな
0015nobodyさん2010/04/10(土) 17:45:58ID:???
字句解析・構文解析してるってことはもう新たな言語を作ったようなもんだ。
テンプレートエンジンとしては非常に大掛かり過ぎるし、
なによりPHP自体がテンプレート機能があるという。
終わってますな。誰も使わないだろう。
0016nobodyさん2010/04/10(土) 18:10:59ID:???
俺が使うよ
0017nobodyさん2010/04/10(土) 20:06:16ID:???
俺も使うよ

>>15 お前は何を言っているんだ?
え?構文解析を行わないテンプレートエンジンってあるの?
PHP自体のテンプレート機能に不足があるからSmartyを開発したって経緯は知ってる?
なんでSmartyがこんなに普及しちゃったか知ってる?
0018nobodyさん2010/04/10(土) 20:37:27ID:???
PHP自体をテンプレートにすると、ビューすらPHP環境に依存してしまうからなぁ。
ショートタグが禁止になっただけで動かなくなっちゃうコードの多い事多い事…。
0019nobodyさん2010/04/10(土) 21:28:59ID:???
>>17
Smarty信者が必死だなw
Smarty2系は構文解析してーねーよ。正規表現で書き換えてるだけ。
オフィシャルにも書いてあるだろ。
PHPで一時期Smartyが流行ったのは知ってるがもう誰も使ってないよ。
CakePHPもsymfonyもSmartyどころかテンプレートエンジン使ってないから。
お前こそなんで最新のFWでテンプレートエンジンが使われなくなったか
知ってるのか?
0020nobodyさん2010/04/10(土) 22:10:15ID:???
教えて教えて!
0021nobodyさん2010/04/10(土) 23:48:55ID:???
>>19
僕は君がこのスレにいる理由を知りたいな!
0022nobodyさん2010/04/11(日) 00:09:07ID:???
俺の使っているSmarty2では構文解析(パース)に正規表現を使っているけどなぁ
公式の序文にもそう書いてあるんだよなぁ…パースが重いからコンパイル済ファイルをキャッシュするって…うーん。

>>お前こそなんで最新のFWでテンプレートエンジンが使われなくなったか知ってるのか?
教えて教えて!
あとTwigとかいうテンプレートエンジンの開発元と、開発の経緯も知ってたら教えて!
0023nobodyさん2010/04/11(日) 01:07:03ID:???
ググレカスw
0024nobodyさん2010/04/11(日) 04:08:04ID:???
未だにSmartyとか使ってる奴いるんだなw
デザイナーにも優しいとか言ってw
デザイナーにテンプレート書かせるなよwww
0025nobodyさん2010/04/11(日) 11:01:07ID:???
俺は組んだデザイナーによってはsmarty使うことがある。
無くてもいけるが、あったらあったで全体の作業は楽になる。
キャッシュの操作は優秀。
それにsmarty否定派に>>24みたいのがいるなら、逆にこれからも使うかという気持ちになる。
0026nobodyさん2010/04/11(日) 11:58:50ID:???
デザイナーがHTMLを作成する
プログラマがSmartyテンプレートにする
デザインに修正が入ったらデザイナが修正する

が一般的だと思うよ
誰でも出来るデザイン修正にPGの手を割く事に疑問を持たない時点でPGとして終わってる
かといってシステムに影響が出るコードをデザイナに触らせるのはセキュリティ意識低すぎると思う

素のPHPをテンプレートとして使う場合、継承とかキャッシュとかどうしてんだろうね…
否定派の言うことも一理あるが、Smartyのメリットを全く生かそうとしない姿勢が素人臭くて可愛らしい
0027nobodyさん2010/04/11(日) 12:05:39ID:???
>>26
そうなんだが、デザイナーがテンプレ修正するなら
デザイナー自身がSmartyに関する知識をある程度
持っている必要あるよな?

そして、Smartyの知識が分かると言うことは
少なからずPHPも理解する必要があり、そうなればデザイナーか何か分からん
0028nobodyさん2010/04/11(日) 12:22:44ID:???
>>27
Smartyのテンプレートを弄るのにPHPの知識は不要じゃないか?
まともなWEBデザイナなら、テンプレートでループする箇所や、テンプレート変数となる箇所を意識してコーディングするわけで、
デザイナ(コーダー)=全くPGが解らないって考えは古いかと…

少なくとも自分の関わっているデザイナは、Smarty肯定派が多い。
テンプレートが素のPHPだと、毎回細かい仕様や制限を確認するのが面倒だけど、Smartyなら気楽だとさ。

0029nobodyさん2010/04/11(日) 12:51:18ID:???
レンタルブログのテンプレートいじる感覚で使えるんじゃないのかな
0030nobodyさん2010/04/11(日) 21:18:22ID:???
てゆーかね、デザイナーにテンプレートを触らせるということは
コードに手を入れさせるのと同じだよね。
そんな気味の悪いこと良くできますねってことだ。
デザイナーが触らないテンプレートならSmartyなんか使わなくても
生PHPで問題あるの?
継承がどうこう言ってる奴がいるが、Viewに継承て。
そんな複雑なテンプレート作るなよw
0031nobodyさん2010/04/11(日) 21:40:41ID:???
>>てゆーかね、デザイナーにテンプレートを触らせるということは
>>コードに手を入れさせるのと同じだよね。
違うよ。全然違うよ。

>>生PHPで問題あるの?
ロジックの混入を防げないよね。致命的なコード書かれたらどうするの?

>>継承がどうこう言ってる奴がいるが、Viewに継承て。
>>そんな複雑なテンプレート作るなよw
お前が作ってるサイトがしょぼい事だけはわかった。
今時のテンプレートは大抵継承機能を持ってるから、その意味を調べてから出直すといい。
0032nobodyさん2010/04/11(日) 22:31:55ID:???
>>31
>違うよ。全然違うよ。
デザイナーにテンプレート触らせる時点で
お前のやってる仕事の規模が伺えるな。

>ロジックの混入を防げないよね。致命的なコード書かれたらどうするの?
デザイナーにテンプレートは書かせないと言ってる。馬鹿か?

>お前が作ってるサイトがしょぼい事だけはわかった。
>今時のテンプレートは大抵継承機能を持ってるから、その意味を調べてから出直すといい。
テンプレートエンジンなんか今時使ってませんからw
その継承機能とやらを知ってるだけでそのはしゃぎっぷりw
テンプレートエンジンを使ってるという時点で
最新のFWを使ってないんだろうなというのがバレバレですよ?
お前が作ってるサイトがしょぼい事だけはわかったわw
0033nobodyさん2010/04/11(日) 23:55:27ID:???
最新のFW使ってないのバレバレ、キリッ。
かっこよすぎるw
是非その素晴らしい最新のFW構成を教えてもらいたいものだ

うちはCake、ZendFWと双方で使えるカスタムSmartyしか使ってないわ
あー、最新のFWつかいてーw
0034nobodyさん2010/04/12(月) 10:39:13ID:???
>>31
> ロジックの混入を防げないよね。致命的なコード書かれたらどうするの?

Smartyを与えても致命的なコードを書かれる可能性はあるわけですが・・・。

>>33
> Cake、ZendFWと双方で使えるカスタムSmarty

それを使わないでCakeとZFを使うのが最新のやり方だと思うよ・・・。
0035nobodyさん2010/04/12(月) 11:34:50ID:???
>>Smartyを与えても致命的なコードを書かれる可能性はあるわけですが・・・。
具体的にはどんな事を書かれてしまうんだい?
宣言のかかったSmartyテンプレートでDBに穴あけたり、サーバに穴あけたりする方法を教えておくれ。

>>それを使わないでCakeとZFを使うのが最新のやり方だと思うよ・・・。
CakeにしろZFにしろ中間となるViewクラスは作るのが一般的かと…
どこの誰が最新のやり方とやらを提唱して実践してるのか教えてくれ

うちでは一からViewクラスを作って仕様化するより、Smartyを導入する方が制作コスト、学習コストは低いと判断されている。
Smarty≧素のPHP>>>>独自仕様のPHP

0036nobodyさん2010/04/12(月) 11:37:01ID:???
×…宣言のかかった
○…制限のかかった
0037nobodyさん2010/04/12(月) 20:04:24ID:???
>>35
マニュアルを読みましょうね。
http://www.smarty.net/manual/ja/plugins.php
http://www.smarty.net/manual/ja/language.function.php.php
等々

自分の事情を「一般的」と決めつけて、それ以外を理解できない時点で、
技術者としては程度が知れてると思いますよ。
Smarty信者はレベルが低いと言われても仕方がない。
0038nobodyさん2010/04/12(月) 21:46:00ID:???
>>37
プラグインはPGが作成して配備しないと使えないよ
PHPタグ?それこそフィルタでどうとでもなるが?

>>自分の事情を「一般的」と決めつけて、それ以外を理解できない時点で、
そのまま君に返すよw 
君の言う最新のFWのやり方ってやつのソースを出してくれ
君の中で「一般的」なだけかい?
Smartyスレまで来て否定してるんだ、さぞかし素晴らしい実績があるんだろ?
0039nobodyさん2010/04/12(月) 21:52:55ID:???
http://www.smarty.net/manual/ja/variable.security.php
0040nobodyさん2010/04/12(月) 21:56:15ID:???
http://www.smarty.net/manual/ja/variable.security.php
http://www.smarty.net/manual/ja/variable.security.settings.php

セキュリティの設定は当然知ってるよな

ふまえた上で、危険な実証コードも提出してくれると助かるな。
低レベルな俺にはわからん。
0041nobodyさん2010/04/12(月) 22:19:14ID:???
>>38
> プラグインはPGが作成して配備しないと使えないよ

作成して設置すれば使えるってことだよね。

> 君の言う最新のFWのやり方ってやつのソースを出してくれ

自分で調べてくれないかな・・・。

http://cakephp.jp/
http://framework.zend.com/manual/ja/
http://symfony-reloaded.org/

>>40
> 危険な実証コードも提出してくれると助かるな。

>>37を読んでね。
0042nobodyさん2010/04/12(月) 23:38:02ID:???
>>41
>>作成して設置すれば使えるってことだよね。

いやだから、デザイナにはプラグインを設置する権限なんて与えないが?

>>自分で調べてくれないかな・・・。
嫌だよww
君の頭の中にしかないソースじゃ調べようが無いだろw

>> 危険な実証コードも提出してくれると助かるな。
>> >>37を読んでね。

プラグインは設置出来ないし、{php}タグも使えないよ?
他は無いんすかw 

結局、君の思い込みだけでSmarty批判してただけか、残念だ。
0043nobodyさん2010/04/13(火) 01:47:03ID:???
Smarty信者は頭が固くなっちゃってて駄目だな。
自分のやり方に固執してそれ以外を受け入れることができなくなってる。
可哀相に。
0044nobodyさん2010/04/13(火) 03:17:43ID:???
もっと柔らかく考えような?
SmartyにはSmartyのメリットもあるんだ。

何も示さずに「Smartyスレ」で、Smarty否定されてもそりゃ誰も受け入れないだろう。
可哀想な僕らに君のその自信と根拠を示してよ(あるならね)

そもそも所詮は手段の一つに過ぎないライブラリを否定する事に意味があるのかは疑問だが…
要件に合わなければ使わなければいいんじゃないの?
手段と目的が逆になってないかい?
0045nobodyさん2010/04/13(火) 03:38:32ID:???
Smartyは好きで使ってたけど、今はほとんど使わなくなっちゃったな。
今時はフレームワークがキャッシュ作ってくれるからSmartyのキャッシュのありがたみが無いし、
どっちにしろforeachやifが入ってくると、テンプレートは思ってるほどすっきりしない。
<?php ?> と書くか {} のと書くか違いぐらいでしか無くなっちゃった。
0046nobodyさん2010/04/13(火) 04:01:54ID:???
フレームワークってそんなにいいんだ。
正直知らんかった。
0047nobodyさん2010/04/13(火) 15:41:41ID:???
というか Twig が気になってきた。
0048nobodyさん2010/04/13(火) 17:27:49ID:???
Smarty使えないヤツにいくら必要性をアピールしたところで無意味だよ
0049nobodyさん2010/04/13(火) 19:43:59ID:???
Smartyは「ロジックの混入を防ぐためのツール」では無いのだが、
それにも関わらず、Smartyを使えば絶対安全だと勘違いする人がいる。

最初から
> SmartyにはSmartyのメリットもあるんだ。
程度の柔らかい論調で語ればいいのに、
「Smarty以外にはメリットが無いからSmarty以外は認めない!」
みたいに意固地に主張するわけのわからない信者がいる。

そういうやつが極端な煽り発言を繰り返すから炎上して、
Smartyユーザが全員馬鹿にされて、このスレで有意義な話題が始まらない。

>>42
「制限すればいい」「権限を与えなければいい」と言うなら、
生のPHPだって、制限をかければ致命的な挙動は避けられるでしょ。
論破したつもりになりたいからどんどん変な条件を追加していって、
結局自分の言いたい根本の部分がおかしくなってるいい例だよ、あなたは。
0050nobodyさん2010/04/13(火) 21:49:16ID:???
で、君は何が言いたいんだい?
「最新のやり方と違う」とか言われてもさ、具体的に何がどう劣って、何がどう優れるのか示してあげなよ。
ここはあくまで「Smartyスレ」なんだよ。わかるかい?

>>生のPHPだって、制限をかければ致命的な挙動は避けられるでしょ。
コード規約上の制限は可能かもしれないが、実際に穴をふさぐのは相当難しいと思うよ?
もし可能だとしたら、それはSmarty以上に肥大化しちゃう気がするよ。

少なくともSmartyの開発思想には「権限管理」があり、それを実現するだけの「機能」がある。
それを求めて導入する人も多々いるって事さ。

論破も何も、君の意見は「最新」とやらを後ろ盾に上から目線で否定してるだけだよね?
0051nobodyさん2010/04/13(火) 21:50:04ID:???
釣れますか?
0052nobodyさん2010/04/14(水) 13:25:07ID:???
>>50
自分は34ですが32ではないです。
最新どうこうは31と32が言い出した事に過ぎないので、個人的には興味ありません。
「Smarty2はモダンではない」という意識が合っていればそれ以上の主張は無いです。

> 少なくともSmartyの開発思想には「権限管理」があり、それを実現するだけの「機能」がある。

自分の立場は、あなたのおっしゃるこの部分への反対の立場です。

> 実際に穴をふさぐのは相当難しいと思うよ?

DBアクセスさせたくなかったらモジュールをロードしなければいいんだし、
safe_modeという機能があるのもご存じでしょう。肥大化は一切しませんよね。

本質は「ガチガチに設定すれば安全にだってできるんだ!」じゃなくて、
「そもそもが安全であるかどうか」でしょ。
「生PHPは絶対に危険で、Smartyは絶対に安全なんだ」って主張は誤ってると思いますよ。

だから、その理由をもって生PHPのテンプレートを持つフレームワークを忌避しているなら、
考え方を柔軟にして、Smarty以外のものも触ってみたらいかがですか、というお話です。
0053nobodyさん2010/04/14(水) 14:25:55ID:???
>DBアクセスさせたくなかったらモジュールをロードしなければいいんだし、
>safe_modeという機能があるのもご存じでしょう。肥大化は一切しませんよね。

View側はそれでいいのかもしれませんが、実際にそのような設定でシステムを稼働させた事はありますか?
Controller側でDBアクセスが必要、View側では不要、という場面は多々あると思います。

>「生PHPは絶対に危険で、Smartyは絶対に安全なんだ」って主張は誤ってると思いますよ。

はい。そうは思いません。
ただView側に権限分離の安全策を施したい場合、Smartyに限らずテンプレートエンジンは有意義だと考えています。

ちなみにFW自体は積極的に導入していますよ。
View部分のみSmartyを採用する事で、それぞれのViewスクリプトの方言を統一する役割も担っています。

Twig等のモダンどころもテスト導入してみましたが、乗り換えるコストに対するメリットが少々薄いという印象ですね。
内部的にはSmartyより遙かに洗練されているとは思いますが。
0054nobodyさん2010/04/14(水) 14:46:21ID:???
そもそも隔離スレだったのに不要論を声高に叫ぶヤツが来るからこうなるんだろ
0055nobodyさん2010/04/14(水) 15:40:44ID:???
なんかわからんけどいなくならないのよね。
Smartyが必要な案件に参加できなかったとか具体的な恨みがあるんだろうけど
0056nobodyさん2010/04/14(水) 15:54:50ID:???
こんな人格じゃあニワンゴくらいしか入れないだろねぇ
0057nobodyさん2010/04/14(水) 17:00:33ID:???
便所の落書きで人格とか言われましても(^o^;
0058nobodyさん2010/04/14(水) 17:36:17ID:???
┏(^o^;)┓
  ┃┃
0059nobodyさん2010/04/19(月) 23:23:08ID:???
>Smartyが必要な案件に参加できなかったとか具体的な恨みがあるんだろうけど
そんなプロジェクトには参画したくありませんから〜
Smartyはいらない子だって分かって!
0060nobodyさん2010/04/19(月) 23:51:58ID:???
そうだね。
あなたと同じくらい、世間様からは必要とされていないのかもしれないね。

ごめんね・・・ごめんね・・・

カーチャンの教育が間違っていたね・・・ごめんね・・・J( 'ー`)し

スレの皆さんも本当に申し訳ありません。
うちの子も本当は仲間に入れて欲しいだけなんです。
素直になれなくて・・・ただ、それだけなんです。

ごめんね・・・ごめんね・・・
0061nobodyさん2010/04/20(火) 11:15:03ID:???
結局このスレで有意義な話題が出るわけじゃなく、
必死のSmarty擁護と煽りが交互に繰り返されるだけという所が、
Smartyの質の悪さを如実に現しているような気がする。
0062nobodyさん2010/04/20(火) 13:31:39ID:???
テンプレをHTMLとjavascriptが辛うじて出来ますくらいの奴にいじらせなきゃいけない時に有効。
それ以外じゃPHPにテンプレエンジンはいらん。
0063nobodyさん2010/04/20(火) 14:16:38ID:???
あのさ、もしかしたら↓の日記に洗脳された人がこのスレで荒らしてるんじゃないのかな
ttp://d.hatena.ne.jp/noopable/20090529/1243571310

Smartyが嫌いなら見にこなけりゃいいのにねw
何でわざわざ書き込みにくるんだろう
Smartyを使った仕事もないから需要というのを知らないのかな
Smartyを完全否定してる人は仕事に関わってなくて、趣味程度な人なんだろうね
0064nobodyさん2010/04/20(火) 14:21:55ID:???
そりゃリプライがあるからだろ
どう見ても狼少年
てか、ポットかもw
0065nobodyさん2010/04/20(火) 14:48:10ID:???
頭悪くてSmartyのメリットを理解出来ない否定派がキーキー喚いてるだけだろ・・・
本当に不要だと思うなら、こんなスレ来ないだろうし。
0066nobodyさん2010/04/20(火) 19:21:47ID:???
無駄に煽るから来るんだと思うが・・・
0067nobodyさん2010/04/20(火) 20:43:50ID:???
煽られてるのはスレ住民側だと思うが
0068nobodyさん2010/04/21(水) 11:02:30ID:???
いちいち相手しなきゃいいじゃん
スルー出来ない奴も荒らし
0069nobodyさん2010/04/21(水) 17:29:06ID:HlbrRuJm
質問してもいいでしょうか

HTMLにSmartyタグを使って
<a href="test{$hoge}test">
こんなのがあった時に、

<a href={"test{$hoge}test"|urlchange}>
こんな感じのことをしたいのですが、Smartyがエラーを吐いてしまいます。

もちろん
<a href={"test"|cat:$hoge|cat:"test"|urlchange}>
ここまで書き換えればうまくいくいのですが…。

うまい解決方法はないでしょうか?
0070692010/04/21(水) 17:30:35ID:HlbrRuJm
aタグの hrefの引数を{ |urlchange} で囲む。
というのを構文解析で自動化したいので、そのhrefの要素の中にSmartyタグが紛れていると厄介だな。
という状況です。
0071nobodyさん2010/04/21(水) 19:37:30ID:???
それこそアンチが言うようにPHP側で処理すればいい
0072nobodyさん2010/04/22(木) 01:32:00ID:???
SmartyはVer3系になって
あまりの迷走っぷりに皆に愛想つかされて消えて欲しいな☆
0073nobodyさん2010/04/22(木) 10:28:49ID:???
えー、Smartyタグを多重に囲うとエラーになるの?w
何それしょぼすぎるw
0074nobodyさん2010/04/22(木) 15:25:41ID:???
文法間違えればそりゃエラーになるだろw

>>69-70
文字列内で変数を展開する場合は、バッククォートで囲う必要があります。
<a href={"test`$hoge`test"|urlchange}>

詳しくは基本構文を参照してください
http://www.smarty.net/manual/ja/language.syntax.quotes.php
0075nobodyさん2010/04/22(木) 18:34:28ID:???
>>74
> HTMLにSmartyタグを使って
> <a href="test{$hoge}test">
> こんなのがあった時に、

詳しくを参照する前に、質問者のレスを読みましょう

必ずこうなってるなら話はべつだがな
<a href={"test`$hoge`test"}>

それに関数使ってた場合は絶対無理だし

<a href={"test"|komekome}>
<a href={{"test"|komekome}|urlchange}>
0076nobodyさん2010/04/22(木) 18:55:08ID:???
SmartyテンプレートをDreamweaverで編集している人いる?
Smartyタグを不可視エレメント表示できないかな
0077nobodyさん2010/04/22(木) 19:12:29ID:???
>>69-70
関数まで考慮するならpostfilter、outputfilterで実装出来るけども
やろうとしてる事自体の設計が間違ってると思う。
0078nobodyさん2010/04/22(木) 21:35:01ID:???
いや、設計は間違ってないだろ
手動でSmartyタグを書いたあとに、一括して全ての特定の何かを置換したい
そういったことはママあることだ

あと、実装するならprefilterだろう
postfilterで何する気だ
0079nobodyさん2010/04/22(木) 23:43:48ID:???
思想としてはありだろうけど、>>69>>75みたいな状況になってしまう時点で実装方法の設計が間違ってるかと。


>>69の要件を実装したいならprefilter内で自前で構文解析するより、
postfilterもしくはoutputfilter内で必要部分をSmatyタグに置換して、再帰的にSmartyテンプレートとして実行すればいいんじゃないのかね。

prefilterで何する気?
0080nobodyさん2010/04/22(木) 23:48:30ID:???
追記

憶測だけども、>>69は全てのリンク先に特定の処理を施したいって事だろうから、
簡単なoutputfilterで文字列置換してやるだけで実現出来ると思うよ。

無理矢理Smartyタグに置換し直す必要性があるのか?って事ね。
0081nobodyさん2010/04/22(木) 23:51:18ID:???
思想としてはありだから、できないのか質問に来たわけだろ?
結果は「できない」

自身の定義タグを再帰的に処理できないとか、Smartyのしょぼさがうかがえるわ
0082nobodyさん2010/04/22(木) 23:59:07ID:???
>>79
> postfilterもしくはoutputfilter内で必要部分をSmatyタグに置換して、再帰的にSmartyテンプレートとして実行すればいいんじゃないのかね。
これの意味がわからね
どういう動作させる気なの?
0083nobodyさん2010/04/23(金) 00:02:20ID:???
>>結果は「できない」
お前がそう思うんならそうなんだろうな・・・お前の中では。


再帰的に処理したいならフィルタ書くなり、再帰的にfetchする実装を行えばいいだけでさほど難しくないよ。
逆に再起処理は自前で実装して再起回数を制御しないと無限ループしてしまうと思うんだけど。

Smartyがしょぼいんじゃなくて、使いこなせてないだけだろw
0084nobodyさん2010/04/23(金) 00:17:01ID:???
>>82
<a href="test{$hoge}test">を実行する。
<a href="testHOGE_VALUEtest">という出力になる。
outputfilterで<a href="{"testHOGE_VALUEtest"|urlchange}">という風に置換して、再度実行する。
別にoutputfilterでなくてもいいけど、好きなタイミングで再起処理すればいいんじゃないかね。


どうしても自前で構文解析して、一度の実行で処理したいなら{capture}タグあたりへの置換を駆使すればいいと思うよ。
0085nobodyさん2010/04/23(金) 10:10:58ID:???
いくらなんでも、
Smartyの出力処理 → HTML構文解析処理 → Smartyタグを新たに自動挿入 → Smartyの出力処理

と、毎回のアクセスでやるのは動作が重すぎるので…

>逆に再起処理は自前で実装して再起回数を制御しないと無限ループしてしまうと思うんだけど。
それこそ無限ループさせる人間がしょぼいと思うんですが…
while文は無限ループする可能性があるので実装しない。みたいなもんで、本末転倒かと
0086nobodyさん2010/04/23(金) 11:52:30ID:???
{capture}を使うことで、狙った通りの挙動が可能なのを確認しました。
今件はこれで終わりにしたいと思います。
色々ありがとうございました。
0087nobodyさん2010/04/23(金) 13:07:05ID:???
まったく役に立ってないけどな
再起処理は自前で実装して再起回数を制御しないと無限ループしてしまう(キリッ
0088nobodyさん2010/04/23(金) 13:35:31ID:???
capture関数を見ていたところ、素直にオリジナルのブロック関数を作ればよいということがわかりました。
報告しておきます。
0089nobodyさん2010/04/23(金) 15:05:36ID:???
器の小さい話だけど1人でサイト作る時は、smarty便利じゃない?
またはデザインが先に出来てて、仕組みを後から作るときとかも。

会員サイト作る時はセッションセキュ考えるのめんどくさいからFWつかっちゃうけど、
joinの嵐サイト作る時は、smartyのみ使う。

2つのキャッシュ機能使いわけが便利ですし。


と俺のお婆ちゃんが言ってた。
0090nobodyさん2010/04/23(金) 17:04:33ID:???
>>85
>>逆に再起処理は自前で実装して再起回数を制御しないと無限ループしてしまうと思うんだけど。
>それこそ無限ループさせる人間がしょぼいと思うんですが…
>while文は無限ループする可能性があるので実装しない。みたいなもんで、本末転倒かと

Smarty自身が再帰機能を持っていた場合、ループ条件はどうやって決めるのって話だが、
自前でループ条件実装しなきゃ駄目だろ?どこに実装しないなんて書いてあるの?w


>Smartyの出力処理 → HTML構文解析処理 → Smartyタグを新たに自動挿入 → Smartyの出力処理
という流れを再帰処理って言うんだけど大丈夫?
再帰処理ってわかってる?w
0091nobodyさん2010/04/23(金) 17:08:00ID:???
>>87
なんだ、お前役に立ってないって自覚してたのか、案外偉いな。

結果は「できない」(キリッ
Smartyのしょぼさがうかがえる(キリッ

とか言ってる時点で気づいて欲しかったが・・・
「できない」wとか言った人が何反論してもむなしいぜ?
0092nobodyさん2010/04/23(金) 17:47:56ID:???
俺Smartyの仕様なんてしらねーもんw
少なくともここの連中的な結論は「できない」だっただろw

もしくは再帰的にSmartyを動かせ(キリッ
おいおいw
パフォーマンスガン無視ですかw

で、真実はSmartyにちゃんと対応できる機能がありました

あれあれ?Smartyを馬鹿にするやつは使いこなせてないからだ(キリッ とか言ってた人達、使いこなしてないですねー?w
0093nobodyさん2010/04/23(金) 17:48:53ID:???
>>90
え・・・smartyタグが全て無くなったら抜けるが分岐条件だろJK
0094nobodyさん2010/04/23(金) 19:03:03ID:???
>>92
開き直りカッコイイです。
どのレスが「できない」なんて言ってるの?お前のレスだけだよw

>で、真実はSmartyにちゃんと対応できる機能がありました
ねぇよw {capture}タグに置換、ブロックタグの作成で実装したって書いてあるだろ
素人だからレスの意味もわからんのだろうけど、これ、Smartyの機能じゃなくて独自拡張な。

>>93
Smartyタグが無くなったら?
それこそ最低2回は構文解析入ってパフォーマンスガタ落ちなんじゃないの?w


目先の論破にムキになって、自分にブーメランが返ってくる良い例だな君は。
0095nobodyさん2010/04/23(金) 20:53:30ID:???
>>93は俺じゃねーよw
対応できる機能「あった」じゃん。独自拡張機能っていう機能が

でもそれを質問者に教えてあげることができなかったんでちゅよねーw
使いこなせば便利なSmarty(キリッ
Smartyに不満があるのは使いこなせてないから(キリッ
0096nobodyさん2010/04/23(金) 20:56:53ID:???
>>95
{capture}もフィルタでの置換処理も、全部>>-84までで出てるけどw
言い返せなくて脳内変換しちゃったかな?かな?

「できない」とか「無い」とか言ってる人お前くらいだよw

0097nobodyさん2010/04/23(金) 21:27:49ID:???
71 名前:nobodyさん[sage] 投稿日:2010/04/21(水) 19:37:30 ID:???
それこそアンチが言うようにPHP側で処理すればいい

74 名前:nobodyさん[sage] 投稿日:2010/04/22(木) 15:25:41 ID:???
文法間違えればそりゃエラーになるだろw

77 名前:nobodyさん[sage] 投稿日:2010/04/22(木) 19:12:29 ID:???
>>69-70
関数まで考慮するならpostfilter、outputfilterで実装出来るけども
やろうとしてる事自体の設計が間違ってると思う。

80 名前:nobodyさん[sage] 投稿日:2010/04/22(木) 23:48:30 ID:???
追記

憶測だけども、>>69は全てのリンク先に特定の処理を施したいって事だろうから、
簡単なoutputfilterで文字列置換してやるだけで実現出来ると思うよ。



captureなんてどこにもないが?
0098nobodyさん2010/04/23(金) 21:30:43ID:???
ブロック関数という言葉すらでてないな
0099nobodyさん2010/04/23(金) 21:54:14ID:???
もういじめてやるなよ
アドバイスできるほど理解のある人間が、たまたまその時間帯いなかっただけだろ
0100nobodyさん2010/04/23(金) 22:03:13ID:???
>>97
>>84
>どうしても自前で構文解析して、一度の実行で処理したいなら{capture}タグあたりへの置換を駆使すればいいと思うよ。

で、他に言いたいことは?
{capture}自体がブロックタグって事は理解してるかい?w
質問主は{capture}使ってみて、拡張したくなったから独自ブロックタグ作ったんだろ。

揚げ足取ろうと必死になってるけど、君の知識の無さを露呈してるだけになってるよw
0101nobodyさん2010/04/23(金) 22:12:29ID:???
>>69-70を実装したいなら、フィルタを使え(>>79)
>>81再帰処理が必要?なら、フィルタやfetchで自前で再帰処理実装しろ(>>83)
単純にリンク先を置換したいだけなら、outputfilterなり{capture}使え(>>80 >>84)

という具合に結論とアドバイスが出てると思うんだが、何処に「出来ない」なんて書いてあるんだろう
>>97が素人過ぎてアドバイスの意味すら理解出来なかったんだろうけど
0102nobodyさん2010/04/23(金) 22:17:43ID:???
僕に理解できるアドバイスが無い!
まともにアドバイスも出来ない低脳ばかりで、ほんっとSmartyって使えない!!って事だろ

>>97
この動画でも見ておちつけよ。お前が映ってるぞ。
http://www.youtube.com/watch?v=ph-qKLyJbkE
0103nobodyさん2010/04/23(金) 22:19:28ID:???
実用的かはともかく不可能じゃ無いよね
まぁ、誰も実装はしないだろうけど
0104nobodyさん2010/04/23(金) 22:36:47ID:???
>>100
なんだ。84「まで」って84も含むのか。明日までといった普通明日になる前を指すんだけどな。
俺が「結果はできない」って言ったのが81なのに、84を引き合いに出すあたりもなぁ・・・
0105nobodyさん2010/04/23(金) 22:44:26ID:???
あー、わかったわかった
81の「結果はできない」という言葉を

81「俺は、Smartyにそのような機能はない。できないと知っている」
と解釈したのか
単に
81「全然まともなアドバイスでないじゃんw 思想的におかしいとか逃げてるってことはできないってことかよw 
思想は別にあってるだろw 69さん残念だね、できないみたいだよw Smartyしょぼいw」

というだけのレスだったんだが
0106nobodyさん2010/04/23(金) 22:48:37ID:???
別にいいじゃねーか。
とりあえず1人はcaptureタグを挙げられる人間がいたし、そのアドバイスに従って解決したんだから。
わざわざ荒らす必要ないだろ。
カスタムブロックタグなんてマイナーな機能だから、ほとんどの人間は使ったことないだけだよ。
Smartyの凄さはそういうことだけじゃない。
0107nobodyさん2010/04/23(金) 23:27:27ID:???
必死なのはわかるが、

>>81
>>思想としてはありだから、できないのか質問に来たわけだろ?
>> 結果は「できない」 自身の定義タグを再帰的に処理できないとか、Smartyのしょぼさがうかがえるわ

この文章を

>>81「全然まともなアドバイスでないじゃんw 思想的におかしいとか逃げてるってことはできないってことかよw 
>>思想は別にあってるだろw 69さん残念だね、できないみたいだよw Smartyしょぼいw」

と解釈するのは無理がある。君はまず日本語の勉強からしたほうがいいな。
伝える力が無いとどんなコミュニティでも認めては貰えないよ。

仮にこの文章を君がそのような意図で書いたのであれば、
やはり「できない」と言っているのは君だけであり、このスレの住人は優秀。
0108nobodyさん2010/04/23(金) 23:35:35ID:???
>>104
少なくとも >>69-70 の要件であれば >>79 で完結している。
無駄に再帰が云々と要件を膨らますから>>84まで話が拡大したんだろ。

「明日」の話なぞしていないし「まで」の例えも間違えているよ。
君は「84まで読め」と言われて、83までしか読まないのかい?
やはり日本語から再度勉強し直したほうが良いだろう。
0109nobodyさん2010/04/24(土) 00:17:07ID:???
>>107
伝える気があると期待してたの?
単に言い捨ててただけだから気にしなくていいよ
Smartyか、もしくは使っている人間がしょぼいんだろうなって思っただけだから

>>108
質問者の意図からはずれていたようだがな>>79

84まで読めなんて書いてないだろ
84は質問者への正答だから、俺は「84さんは優秀で返答できた。84以外バカばっかりじゃん」と思った
それに対して「84さん以外でもちゃんと答え出せてたもん!84に至るまでにもう応えてたもん!」というあがきに見えたから「84に至るまでの間に、何も答えなんてだせてなかったじゃん」と煽った
OK?

「思想が間違ってる」だの「再帰処理は無限ループになっちゃう」だの、的外れなバカばかりがSmarty使ってるんですねって言ってるの
OK?
■ このスレッドは過去ログ倉庫に格納されています