トップページ⇒php
984コメント324KB

【PHP】Smarty【Template】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん03/03/10 00:57ID:NhgrjNBT
このスレ、あってもいいんじゃないかと。

本家(英語)
http://smarty.php.net/

日本語マニュアルとか
http://sunset.freespace.jp/smarty/
0002nobodyさん03/03/10 01:01ID:???
前に無かったっけ?
コンテンツとデザインの分離はしばらく物議かもしそうだし
解決策の1つとしてsmartyいいかもね。

ついでに2げっと。
0003 ◆AngelH/kMI 03/03/10 12:35ID:???
3げとずさー(AA略

最近使い始めたよ>Smarty
使いこなしていると言えるまでにどれだけかかるやら。

0004 ◆AngelH/kMI 03/03/10 12:47ID:???
メモ代わりに。
自分が引っかかったところ。

青マンモス本の時点ではループ指定(テンプレート側)するときに
{$loopname/variable}
だったのが
{$variable[loopname]}
になってる。
$varibableが連想配列なら
{$variable[loopname].arrayname}
こんな感じ。

0005nobodyさん03/03/11 00:06ID:???
Smartyって、コンパイル(?)してキャッシュを作るみたいですが、
キャッシュを作らずにHTMLを吐き出す方法はないでしょうか?
0006nobodyさん03/03/11 17:04ID:???
ついに作られたかsmartyスレ。歓迎。
0007nobodyさん03/03/11 17:06ID:???
>>5
よくわからんが、コンパイルされたファイルとキャッシュされたファイルは別物だが。

キャッシュを作らずHTMLを作るとはどういうこと?
毎回コンパイルするようにしたいなら、設定変えればできるぞ。
0008nobodyさん03/03/11 17:07ID:???
日本語のマニュアル
http://sunset.freespace.jp/smarty/

↑ここもマジで感謝!!
0009nobodyさん03/03/11 17:09ID:???
有名なところだと、XOOPS2にsmartyが使われています。

XOOPS 日本の公式サイト
http://jp.xoops.org/
0010nobodyさん03/03/11 17:25ID:???
誰かSmarty[スマテイ]の基本的な使い方を解説してくれ。簡単にな。
0011nobodyさん03/03/11 17:32ID:???
>>10
まず、スマテイをスマーティーと発音する。
0012nobodyさん03/03/11 17:38ID:???
日本語サイトにメリットとして

>より明確にphpのプレゼンテーションからアプリケーションの ロジックとコンテンツを分離して管理する事を容易にします。
>これはプログラマーとテンプレートデザイナーの役割が異なる 状況か、
>たいていの場合は同じ人間ではないのが最良だという事です。

こう書いてあったんだけど、つまり役割が同じ場合はこれ用なし?
0013nobodyさん03/03/11 17:52ID:???
>>11
スマーティー  発音わかった。 
誰かSmarty[スマーティー]の基本的な使い方を解説してくれ。簡単にな。
0014nobodyさん03/03/11 17:59ID:???
>>13
まず、スマーティーをスマーティと発音する。
0015nobodyさん03/03/11 18:23ID:???
>>14
スマーティ♪ マギーシローっぽい。
0016あぼーんNGNG
あぼーん
0017 ◆AngelH/kMI 03/03/11 19:17ID:???
メモ代わりにドキュメント書いてるんだけど
仕事忙しくてなかなか進まず。

すまんのぅ。
0018nobodyさん03/03/11 22:07ID:???
>>13
ダウンロードしてQUICKINSTALLを読むべし!
0019nobodyさん03/03/12 01:12ID:BE9nbHm+
これでフォームに自動的に値入力(Perl&RubyでいうFillInForm)
の機能があったらかなりイイのだが
も前らPHPではフォームに値付けるのどうされてますか?

PHP版HTML::Template
http://sourceforge.net/projects/phphtmltemplate/
0020あぼーんNGNG
あぼーん
0021nobodyさん03/03/12 05:18ID:???
おまえらなんでsmarty使ってる?
0022 ◆AngelH/kMI 03/03/12 08:47ID:???
>21
自分の場合はデザインとコードの分離のため。
HTMLを書く人間が別にいる場合、分離していないと
かなり面倒なことになる。

そのあたりの議論は
http://pc2.2ch.net/test/read.cgi/php/990953955/
こっちでかなりやっていた気がする。
0023nobodyさん03/03/12 11:09ID:???
かっこよさそうだから。
00242103/03/12 11:35ID:???
>>22
そうそう、前そこのスレでsmartyスレ立てようって言ってたんだけど
あんまりユーザがいないようだから。
でもXOOPS2でsmarty採用したから使う人が増えるかもね。
0025nobodyさん03/03/12 16:12ID:???
smartyは、テンプレートプログラミングみたいで、
デザイナーは、はたして使えるのか?と思うけど、
つか、HTMLテンプレートのほうが分かり易いのかな?と思ったり、
両方使った事ある人どう思う?
0026あぼーんNGNG
あぼーん
0027nobodyさん03/03/12 17:11ID:???
php自体がテンプレートみたいなもんじゃん。アホらしい。
0028nobodyさん03/03/12 17:31ID:???
暇つぶしにCでCGIを書いてみたんだが、
perl,phpは楽だよな。>>27のいうことも分かる。
問題はデザイナーが単独でphpスクリプトを修正できるかというと
そこまで簡単じゃないってことだな。
プログラマ・デザイナの両方の負担の釣り合いが取れるところがsmartyなんじゃないの?
0029nobodyさん03/03/12 18:11ID:???
>>28
MVCってのがある。

V(View)はMからデータを呼び出すだけで単独では通常計算を行わない。
と言うことになっている。

表示すべき項目を$dataと言うハッシュに詰め込んで、

「データは<? print($data["name"]);?>で表示させられるよ。」

とか言っちゃえば良いと。

デザイナがJavaScript位は出来るだろうと(Web制作の某スレではこれはデザイナの仕事ではないらしい。(藁)仮定すると
PHPの豊富な制御構造くらい使いこなせるだろう。

こうしてみるとその辺の下手なテンプレート機構より遙かに強力でしかも汎用的だ。


JSPと同じ思想でPHPを使っちゃおうというのが俺の言いたいこと。
0030nobodyさん03/03/12 21:31ID:???
Templateの存在意義とか話すのはスレ違いだろ。
折角Smartyのスレたったんだし、Smartyの話しようや。
0031nobodyさん03/03/12 23:50ID:???
Smartyだけは厳しいと。
0032nobodyさん03/03/13 00:42ID:???
HTML::Templateならそのまま>>29の言うMだけ
をPerlやRubyにできるな。
HTML::Templateのがよくないか?

PHPでテンプレート使うの馬鹿らしいんだけど、テンプレート
前提でコーディングしとくと、渡す直前で値をダンプしてみれば
エラーの原因とか何やってるのかがすぐわかるのよ。
0033nobodyさん03/03/13 00:50ID:???
たしかにPHPでテンプレートってどうなんだろう?
0034nobodyさん03/03/13 11:02ID:???
誰かsmartyで携帯対応なサイト作ってる香具師いる?
0035nobodyさん03/03/13 11:10ID:???
>>32
いや、だからVにテンプレートを採用するかPHPの特性を素直に使うかの違いよ。
両者ともデータチェックはMの最後なりCの最後なりでチェックできる。
0036 ◆AngelH/kMI 03/03/13 13:30ID:???
>34
微妙に。

>35
まあ、そうだねぇ。
結局は好みの問題。
既存のテンプレートエンジンが気に入らなければ
自分で作ってもいいし、
自分にあうのがあればそれを使えばいいだけ。

自分はループのネスト考えるのがだるくて
既存のものを使ってますが(苦笑
WYSIWYGなエディタでも表示崩れないやつが好き。


あとHTML_Template_ITバージョンアップしてるな。
0037nobodyさん03/03/13 13:31ID:???
>>36
>WYSIWYGなエディタでも表示崩れないやつが好き。

ある?php始めてからもっぱらテキストエディタ派になっちゃいましたが。
0038 ◆AngelH/kMI 03/03/13 13:44ID:???
>37
川里氏/佐藤氏のPHP4テンプレートクラスライブラリ(改)は
割とそのあたり気を使って作られていたよ。
http://www.daiwakantei.co.jp/pc/tmpl2sa.html
Dreamweaverでは平気だった。

Smartyもうまく使えば大丈夫だと思う。
(というか、テンプレートファイルと画像を置く位置かな)

個人的には
http://sunset.freespace.jp/smarty/
ここにスクリーンショットでてるDreamweaverMXの
extensionに期待。
0039山崎渉03/03/13 16:56ID:???
(^^)
0040nobodyさん03/03/15 10:11ID:???
smartyの良さって、デザインとコードの分離もあるけどさ、
コンパイルされたファイルとキャッシュによる表示速度の速度の向上じゃない?
0041nobodyさん03/03/15 12:33ID:???
>>40
>コンパイルされたファイル
結局は1行ごとにインタプリトされると思うよ。
0042nobodyさん03/03/15 23:39ID:X1LKF8i0
話題ないね
0043nobodyさん03/03/16 01:17ID:???
質問だがsmartyを使ってて中にperlのCGIを埋め込むことできる?

つまりブロックで言うとトップとレフトはsmartyのテンプレなんだけど、
真中のコンテンツの部分をperlのCGI(掲示板)を利用したいわけです。

cgiを呼び出せば、内容は表示できそうですが、POSTとかGETした時
内容を渡せるのか?とか難しそうです。

そんなことしてる香具師いる?
0044nobodyさん03/03/16 01:27ID:???
そもそもsmartyはPHP標準?既にインストールされてるの?
0045nobodyさん03/03/16 19:59ID:???
>>44
されてない。
もともとPHP自体がHTMLに埋め込んで使うものだから、
標準インストールする意味はあまり無さそうだと思う。
0046nobodyさん03/03/18 15:26ID:???
smartyで携帯サイト作ってる奴いる?
0047nobodyさん03/03/21 05:00ID:???
>>43
perlのCGI側でHTML::Templateとか使ったほうがラクじゃないの?
0048nobodyさん03/03/21 12:19ID:???
Smarty使えない鯖なんですが
ほかに標準のテンプレート機能ってあるのしょうか?
0049nobodyさん03/03/21 14:56ID:???
>>48
10スレ前の過去ログも読めないのか…
0050nobodyさん03/03/21 19:50ID:02OewLFo
>>48
Smarty使えない鯖ってどんな鯖?
0051nobodyさん03/03/21 19:52ID:???
>>48
>ほかに標準のテンプレート機能ってあるのしょうか?

PHP
0052nobodyさん03/03/21 20:08ID:???
この中に数人テンプレートの意味がわかってない人がいますね。(w
0053nobodyさん03/03/21 20:30ID:???
>>50
PHPが使えないサーバーか、quotaが1MBぐらいのサーバー。
0054nobodyさん03/03/21 20:51ID:???
テンプレートの本質を理解していない>>52

という印象を受けた。
0055nobodyさん03/03/21 21:07ID:???
>>54
本質を聞きたいといってみる。(w
0056nobodyさん03/03/21 21:46ID:???
>>50
WebARENAだがなにか?
0057 ◆AngelH/kMI 03/03/21 23:50ID:???
んー。
safemodeがonになっていても使えるけど>Smarty
後使えない可能性ってなんだろう。
0058 ◆AngelH/kMI 03/03/21 23:51ID:???
というか基本的なことだけど。
「使えない」という状態がいったいどういう状態なのかを
言ってくれないと、アドバイスのしようもない。
0059nobodyさん03/03/21 23:56ID:???
>>58
冷静に考えて、エラーメッセージやエラーの分析を怠る奴がモジュールの導入をミスなくこなしている
可能性は低いと思う。
0060nobodyさん03/03/23 16:35ID:GUMN7n0B
使えないのはSmartyじゃなくて、そいつの頭。
0061nobodyさん03/03/24 00:18ID:???
Smartyってつかったことないが、なんかテンプレートというより
別の構文の言語ってかんじに見える。
おれは patTemplateの方が純粋にテンプレートっぽくって好き。
http://www.php-j.com/tutorial/php/template.php
0062 ◆AngelH/kMI 03/03/24 08:18ID:???
>61
出来ることが多いから自分も最初は
「何となくめんどくせー」
と思って使ってなかったんだけど、
実際に使ってみるとそうでもないよ。
必要ない機能は使わなければいいし。

header、footer、ループ部分を別にするテンプレートは
WYSIWYGなエディタ使えないので個人的にはあまり…
という感じ。

・Smarty
・PHP4 テンプレートクラスライブラリ改(tmpl2.class.php)
・HTML::Template_IT (PEAR)
自分が使ってみて使いやすかったのはこのあたり。
Smartyで注意することはSJISのテンプレートを使うときに
プリフィルタ/ポストフィルタを使って文字エンコードを変えないと
テンプレート内に「宮」とか書かれてるとエラーになってしまうあたり。
ttp://ns1.php.gr.jp/pipermail/php-users/2003-February/013595.html
このあたり参考に。
0063nobodyさん03/03/24 16:20ID:???
Smarty使ってみた感想は多機能なので面倒です。
おまけに、smarty関連のディレクトリでいっぱいになって、
漏れのような小物野郎には大袈裟すぎと気付きました。
大規模システムには使い道があるんだと思うけど、

誰か、気軽に同封できるような、おすすめテンプレート情報もとむ。
0064nobodyさん03/03/24 16:21ID:F52n5d8W
アホで申し訳ないのだが
Smartyの利用条件とかってあるの?
0065nobodyさん03/03/24 16:37ID:???
売るの? 売っちゃダメだよ。
0066nobodyさん03/03/24 17:39ID:???
食べるのはOK?
0067nobodyさん03/03/24 17:52ID:bvsiZdot
Smartyを利用してるアプリで、売られてるものも多数ある。
ライセンスはGNU LGPLなんでそれさえ守っておけばいい。
0068あぼーんNGNG
あぼーん
0069nobodyさん03/03/24 17:59ID:???
Smartyを売っちゃダメだよ。
0070あぼーんNGNG
あぼーん
0071nobodyさん03/03/24 19:30ID:???
>>67,69
ありがとさんすー
0072nobodyさん03/03/25 12:43ID:FOZw8qka
>>69
そうなの?
0073nobodyさん03/03/25 14:04ID:CVcoKJbJ
smarty 使ってみたよ。
マニュアル翻訳された方、ありがとう&お疲れ様。

PHP自体がある程度テンプレート的な使い方が出来るので、
確かに小規模なプロジェクトでは導入コストに較べてメリットは少ないですね。
プラグインとか使って見たいけど、私も使う機会なさそうだな。

ところで、[php] ... [/php] タグの存在に戸惑っています。
テンプレートとロジックを一緒に管理する事ができますッテ…(汗
テンプレートをコンポーネント化するより、
そのテンプレートを呼び出すメソッドを実装して、
その中に初期化など共通する処理を書いた方がいいと思うのだけど…
どうなんでしょう? php とか php_include タグの評判は。
アイデアは確かにいいんですけど、これって別にSmarty使う必要ないですよね?PHPでは。
ロジックの分離という点に置いては、テンプレートには不要だと思う。

PHPにループ用のタグを導入してくれればいいのになぁ…。
0074nobodyさん03/03/25 14:30ID:???
PHPでテンプレートとか言われるとジェネリックプログラミングを想像してよろしくない。

まぁ、形無し言語でそんなもん語っても仕方ないがしかし・・・。
0075nobodyさん03/03/25 16:24ID:FOZw8qka
PHPという文脈でテンプレートと出てきたら、普通はジェネリックプログラミング
なんて浮かばないって。

PHP5の例外処理サポートが楽しみだ。
0076 ◆AngelH/kMI 03/03/25 23:51ID:???
強行日程な出張から帰還〜

>73
とりあえず、[php]タグは忘れてるよ(笑
デザイナーにも教えてない。
余計なことされて事故って後から自分が修正・・・とか嫌だし。

というか、自分はデザインとの分離さえ出来ればいいから
変数への代入とループさえ出来れば困らないんだけどね・・・。
0077nobodyさん03/03/26 00:11ID:???
>>76
余計なことができるような設計にしてる方が問題な訳だけれどね。
0078nobodyさん03/03/26 05:55ID:Zn78/v4/
>>77
一応、[php]タグは禁止する事もできるようになってる。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0RC1J_html/variable.security.html

うっかりセキュリティの脆弱を招かないためにも、
できれば$security = true、これ推奨。

Smartyはちょっと多機能になりすぎてる感があるね。
例えば最近、テンプレートからphpのオブジェクトのメソッドやらにアクセス出来る
機能が追加されたりしたけど、ロジックとデザインの分離が目的なのであれば、
本当は必要ないと思う。Smartyで何でもかんでもやろうとしすぎている。
せっかく他のテンプレートエンジンと比べて、キャッシュやカスタム関数による拡張性が
優れてるんだから、あんまり飛躍しすぎてヘンな事になってほしくないなぁ。
0079nobodyさん03/03/26 10:58ID:???
>>78
あんたの言うビューとロジックの分離はロジックにビューのいくつかの処理をやらせると言うことでは?
0080nobodyさん03/03/26 16:43ID:???
>>79
あんたデザインとロジック一人で全部やってるだろ?(w
0081nobodyさん03/03/26 17:17ID:???
>>80
はいはい、勝てないからって話をそらさない。
 
00827303/03/27 07:18ID:illH7cXT
[php] タグは見なかったことにしよぉ ... *sight*

> できれば$security = true、これ推奨。
THX これ探していました!!
これで安心してSmarty導入出来そうです(感謝)

>テンプレートからphpのオブジェクトのメソッドやらにアクセス出来る
>機能が追加されたりしたけど、
テンプレートに渡すオブジェクトにはgetメソッドしか実装しない/実行できない様にすれば少しは安全になるかも。
例えば、getDateメソッドに日付の表示フォーマットを引数に指定する等、
テンプレート側で指定できるとちょっと便利かな、と思ったりして。
でも、余計な事が出来てしまうリスクが痛いよなぁ。

ちなみに、テンプレートからオブジェクトのメソッドを呼ぶにはどう記述すればいいんでしょうか?
ドキュメントに、プロパティへのアクセス方法は見つけたのだけど…、
versionが古いのかな。見つけられませんでした<2.3.1です
昨日 2.5.0 RC2 リリースされたみたいなので updateしておこぅ〜っと。

>>79
それって、コンポーネント化と逆の発想?それとも、
例えば、「メールアドレスがある場合、名前にリンクを張る」という処理を
処理してからテンプレートに送るのか、テンプレート側で処理するか、って事ですか?

>>79-81
論点が解からない…。77, 78 は、自分には「Smarty本体には、デザインとロジックの分離の利点を損なう実装を許すような
余計な拡張機能は必要ない」という風に聞こえるのですが、何か勘違いしてる?フォローお願いします。
0083nobodyさん03/03/29 15:15ID:CQcFf7wk
73さん

Smartyで開発するときに注意したほうがいいこと(プログラマと
デザイナの取り決めなど)があったらお教え願えませんか?

(当方PHPは一週間の初心者ですが、今後社内のデザイナと
協力して社外向けWebプログラムを開発します)
00847303/03/29 23:32ID:5Ovapm1S
>>83
当方も、smartyは1週間の初心者です。
どちらかと言うと、教えてもらいたい側の人なのですが、
導入時に考えていた事を叩き台に書き出して見ます。
参考になればいいけど・・・。

まず、注意しないといけない事って、XSS問題とかですよね。
テンプレートに渡す値がエスケープされてるかどうか、
それとも、テンプレート側でエスケープするのか等。
セキュリティの問題の他にサイトのレイアウト崩壊とかも、
XSSで(重要度は違えど)起こり得るので、デザイナの方の理解を得て、
明確にしておいた方がいいとおもう。
セキュリティがデザイナさんの作るテンプレートに依存してしまう状況
というのは、ちょっと怖いので。

それと、情報の隠匿。社内のデザイナということなので、リスクは少ないと思いますが。
でも、不用意にオブジェクトをテンプレートに渡したりて、余計なところにアクセスされたりすると困るかも知れないので。
私も、>>76,>>78 に習って、
”デザイナーには教えない”,”設定で禁止する”と言う方針を見習おうかと思っています。

ところで、grep -E '{.+?}' *.tpl でテンプレート内の埋め込み文全部拾えるかな?
テンプレートの簡単なチェック・スクリプト作っておくと便利かも知れない。
実際の動作テストは、別に用意する必要あるだろうけど。
00857303/03/29 23:34ID:5Ovapm1S
以下、自己補足。

>>73 コンポーネントで管理すること自体は便利な場合もあるけど、
テンプレート内にコードを含めるのは、自分にとってはリスク。
どうしても必要な場合は、[php]タグより include_php を使お〜っと。
上級ユーザではないので、コードが混ざったテンプレートを保守出来る自信ない;;
それに、テンプレート導入の利点がなくなるし。

> テンプレートからオブジェクトのメソッドを呼ぶ
Document 15. Advanced Features -> Objects 内に見つけましたm(_ _
テンプレートから利用できるプロパティ/メソッドを制限できるみたいなので、
セキュリティ面での心配は杞憂だったみたいです。
0086あぼーんNGNG
あぼーん
0087nobodyさん03/03/30 06:50ID:7nc9kl8w
>>84, 85
ご意見ありがとう。

デザイナーにphpタグを教えると、
「私にプログラム組めっていうのかさぁ」
とか言われそう(^^;
コード保守上も、Simple is Best だと思いますから、
phpタグは使わないようにしたいと思います。
(というか、ふつう最初からphpタグ使おうなんて考えないでしょうね)

「XSS」という言葉が理解できません。教えてください。

それから、Smartyはコンパイル処理があるようですが、
漢字コードが含まれていても大丈夫なのでしょうか?
(SJIS、EUCともOK?)
0088nobodyさん03/03/30 10:11ID:ho1IX9Y5
XSS クロスサイトスクリプティング、かな。
0089nobodyさん03/03/30 10:30ID:???
横からスマソが、俺はCSS以外にXSSっていう書き方もあるって言う事は知らなかった。
クロス=Xなのね。
ひとつおりこうになれたYO
ありが�d

       /■\
   ∧_∧ (;´Д` )
    (・ω・)丿 ッパ
.  ノ/  /
  ノ ̄ゝ
いっしょにおにぎりたべませんか?
0090 ◆AngelH/kMI 03/03/30 10:33ID:???
>>87
>それから、Smartyはコンパイル処理があるようですが、
>漢字コードが含まれていても大丈夫なのでしょうか?
>(SJIS、EUCともOK?)

>>62を参考に
0091nobodyさん03/03/31 13:53ID:D0ex7lz/
>>89
CSSじゃCascading Style Sheetsと紛らわしいからね。
0092nobodyさん03/03/31 18:47ID:???
今度からXSSにしよう。
0093nobodyさん03/03/31 18:48ID:???
ごめんなさい。3つ上を見てなかった。
0094nobodyさん03/04/02 04:49ID:???
漢字コードについては、
SJISの2バイト目に { や } が含まれることがある問題ですよね?
デリミタを、文字コードに依存しない他の文字に変更する。
文字コードに依存する部分は全て別のリソースにする。
等も、別の解決策として選択肢にいれておいてもいいのでわ。
0095nobodyさん03/04/03 18:46ID:???
>>63 誰か、気軽に同封できるような、おすすめテンプレート情報もとむ。
http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=top
これわかりやすくていいよ。
DW上でも埋め込めるし。
0096nobodyさん03/04/04 04:21ID:CWbmmlFZ
テンプレートの中で他のテンプレートをインクルード
しています(ヘッダとフッタを入れている)。

すべての画面でデザインを統一しようとすると、どんな
小さな画面でもテンプレートにしてやらないと、ヘッダと
フッタが表示されません。
これでは非常に面倒なのですが、何かよい方法はない
でしょうか?
0097nobodyさん03/04/04 11:37ID:???
>>96
テンプレートをメインスクリプトあたりから直接弄ろうとしているからいちいち面倒なんだよ。
viewクラスを作って、「ヘッダとフッタはいつもの奴、メインボディはこれで」って感じで渡して
やればいいんじゃない。

#説明ベタ&Smartyは使ってないので外しているかもしれんが
0098nobodyさん03/04/05 05:35ID:WWynoIxP
>>97
あそっか。
Smartyクラスをextendsしたクラスをつくって
やればいいわけですね。

たいへん参考になりました。ありがとう!
0099nobodyさん03/04/09 02:13ID:???
/www/index.tpl
/subdomain/index.tpl

とか別ディレクトリに同じ名前のテンプレートがある場合は、
どーすればよいの?

同じSmarty.class.php は使えないのかな?
0100nobodyさん03/04/10 15:06ID:Gsybxm64
>>99
98と同じ回答でいけるよ。

Smartyクラスをextendsした自分のクラスのコンストラクタ
で、各ディレクトリを指定してやればよいと思うが。
0101あぼーんNGNG
あぼーん
0102nobodyさん03/04/12 10:21ID:1gFMXfRc
2.5.0 release age
0103nobodyさん03/04/13 03:48ID:???
>>100
回答ありがとうなのだが、意味がわからんので勉強してきまつ
0104山崎渉03/04/17 12:05ID:???
(^^)
0105nobodyさん03/04/20 21:11ID:PaIMcwUL
同じ テンプレート名は許されないのか???

同じ名前のテンプレートを違うディレクトリに置いて使っていたのだが、
まったく意図しない動きになりびびった。
0106nobodyさん03/04/20 21:22ID:???
>>105
結局どのように対処しましたか?

/public_html/www/index.php
/public_html/sub/index.php
/public_html/info/index.php

などサブドメインを作りたいんですけど、個別にインストールするのも
メンテ性が悪いですし…
010710503/04/20 22:15ID:???
ttp://smarty.php.net/manual/en/installing.smarty.extended.php
のようにラッパークラスを作ったり、

あとは、いちいち 

$smarty = new Smarty;
$smarty->compile_dir = "/path/to/somewhere";

のようにディレクトリをしていしたりとか。。。

でも、めんどくさい。

ていうか、同じテンプレート名が使えないってのは仕様なんですか?
最初バグかと思ったんですが。
0108nobodyさん03/04/23 01:25ID:???
>>107
ここに書いてあった。

異なるディレクトリに置かれたテンプレートを使用する方法
http://sunset.freespace.jp/smarty/
0109nobodyさん03/04/23 01:29ID:???
>>108
読んでみたがいまいちよくわからんかった。

結局
>display() の引数 compile_id, cache_id を利用する事で可能となる。
この場合のやり方は、どうするの?

>1つのSmartyを複数のプロジェクトで使用する場合は、display( PROJECT_TPL_DIR . 'index.tpl'); とかになるのかな?

??
どういうことなのでしょうか?
0110nobodyさん03/04/23 05:14ID:/AFbvcV5
>>107-109
横からすみません。。。

アプリごとにラッパークラスを作って、その中で
$template_dirを指定すればいいと思いますが、
何か問題があるのですか?
0111あぼーんNGNG
あぼーん
0112nobodyさん03/04/23 08:06ID:???
ようするに人それぞれか?
0113nobodyさん03/04/27 07:29ID:???
>>107-
俺の場合たいていこうしてる

display($template_file, $_SERVER[REQUEST_URI], $_SERVER[REQUEST_URI]);
0114nobodyさん03/05/02 19:49ID:rrWLpWsV
今日からSmartyを触り始めたものです。設定について
ttp://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/
の「基本的なインストール」をみながら設定しました。

上記に沿ってテスト用のファイルを作成して表示してみましたが
下記のようなエラーが出てしまって困っています。
Warning: Smarty error: unable to read template resource: "smarty_test.tpl" in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042

Smarty.class.phpファイルの1042行目あたりは以下のとおりでした。
-------------------------------
function trigger_error($error_msg, $error_type = E_USER_WARNING)
{
trigger_error("Smarty error: $error_msg", $error_type);
}
-------------------------------
何が問題なのでしょうか。

環境:
 RedHat 7.3 Apache 1.3.27
 PHP 4.2.3 multibyte
 PHPlib 7.4-pre1 Smarty 2.5.0 Source
011511403/05/02 19:53ID:rrWLpWsV
続きです。
設定は以下のようにしました。

Smarty本体は以下のように格納しました。
/usr/local/lib/php/Smarty/Smarty.class.php
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty/Config_File.class.php
/usr/local/lib/php/Smarty/debug.tpl
/usr/local/lib/php/Smarty/plugins/*.php

webサーバのドキュメントルートに以下のようにフォルダを作成し、chmod 770しました。
/usr/local/apache/htdocs/php/smarty/
/usr/local/apache/htdocs/php/templates/
/usr/local/apache/htdocs/php/templates_c/
/usr/local/apache/htdocs/php/cache/
/usr/local/apache/htdocs/php/configs/

php.iniの設定は下記のとおりです。
include_path = ".:/usr/local/apache/htdocs/phplib/php:/usr/local/lib/php/Smarty/"

ttp://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.basic.htmlExample
上記のサイトの「2-2. Smartyのインスタンスを作成する」のとおり
テストしてみましたがSmarty.class.php file could not be found という
エラーは出ませんでした。
011611403/05/02 19:54ID:rrWLpWsV
更に続きです...

テスト用に下記のようにファイルを設定しました。
templatesフォルダ内に「smarty_test.tpl」
----------------
{* Smarty *}
<html><body>
Hello, {$name}!
</body></html>
----------------

smartyフォルダ内に「smarty_test.php」
----------------
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = '/usr/local/apahce/htdocs/php/templates/';
$smarty->compile_dir = '/usr/local/apahce/htdocs/php/templates_c/';
$smarty->config_dir = '/usr/local/apahce/htdocs/php/configs/';
$smarty->cache_dir = '/usr/local/apahce/htdocs/php/cache/';
$smarty->assign('name','Ned');
$smarty->display('smarty_test.tpl');
?>
----------------
もー何が何やら( ´д`;)
ナガクテスマソ...
0117nobodyさん03/05/03 13:57ID:???
debug onにしてやってみたら?

多分PATHが間違ってるだけか、パーミッションの問題のような気がするけど。
ファイルのオーナーはどうなってる?
あと、セーフモードはon?off?
011811403/05/03 17:06ID:ucISI8En
>117 レスThanks!
debug on ってphp.iniの設定でつか?
セーフモードはoffです。
パーミッションとファイルのオーナーは普通に
アップロードダウンロードできるんで問題なさそうな気がしますが
そういう問題じゃないでしょうか?

エラーの内容がSmarty.class.phpが違ってるって事だったんですが
やっぱりパスのせいなんでしょうか?
パス違ってたら最初から読み込めないんじゃないかと思ったんですがいかがでしょう?
0119あぼーんNGNG
あぼーん
0120nobodyさん03/05/04 12:42ID:???
>>118
debug onはSmartyの。今はあんま関係ないかも。

パーミッションは、UL,DL関係ない。
apacheがtemplates_c とか cache に書き込めるかが重要。 だけど、これも違うエラーがでるから関係ないかな。

Warning: Smarty error: unable to read template resource: "smarty_test.tpl" in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042
をそのまま訳すとテンプレートのリソースが読めん!!ってことだから、

templates/smarty_test.tpl が読めないんでしょ?

だから、smarty_test.tpl のパーミッションか、
その上位ディレクトリのバーミッションじゃない?
012111403/05/04 21:05ID:PMPOUjrA
> 118 レスThanks!!

> templates/smarty_test.tpl が読めないんでしょ?

なるほど!Smarty.class.phpが違ってるって事じゃないんですな。

> だから、smarty_test.tpl のパーミッションか、
> その上位ディレクトリのバーミッションじゃない?

templates/ あたりは全部115に書いたとおり770にしました。
青マンモス本には700に書いてあったんで、そっちも試したけど同じでした。

問題はsmarty_test.tplファイルのパーミッション。
このファイルは、WindowsXPで作成して、FFFTPで該当ディレクトリにアップしました。

その後は、そのままで全くいじってないんだけど、このままだと
もしかして書き込みができないから駄目とか??
.tplファイルはアップロードしたら権限を修正するべき物でしょうか?
0122あぼーんNGNG
あぼーん
0123nobodyさん03/05/05 01:21ID:???
>>121
パーミッションを全部書いてみ。

templates_c は777でないと動かない時があるって、QUICKINSTALLかなにかに
書いてあったの読んだ?

templates_c,cache のファイルオーナーが、Webサーバと同じにならないなら、
777でないとダメじゃなかったっけ?

わからんのなら、全部777にしてみろ。
012411403/05/06 10:47ID:aSOV5r0L
>123 ありがとうございます。

templates_c は777でないと動かない時があるって言うのは知りませんでした。
とりあえず、全部777にしてみました。実行結果は同じエラーでした。
パーミッションとディレクトリ構成はこんな感じです。

/usr/local/apache/htdocs
--Webファイルをおくディレクトリでユーザとオーナーはwwwです。

この中にphpというディレクトリがありパーミッションは以下のとおりです。
/usr/local/apache/htdocs/php
drwxrwxrwx 7 www www 4096 5月 2 19:35 php

このphpフォルダ内に、smarty用のディレクトリを入れ777にしました。
drwxrwxrwx 2 www www 4096 5月 2 17:53 cache
drwxrwxrwx 2 www www 4096 5月 2 19:19 configs
drwxrwxrwx 2 www www 4096 5月 2 18:16 smarty
drwxrwxrwx 2 www www 4096 5月 2 19:18 templates
drwxrwxrwx 2 www www 4096 5月 2 17:53 templates_c

テンプレートディレクトリ内に下記ファイルがあります。
-rwxrwxrwx 1 www-data www-data 56 5月 2 19:24 smarty_test.tpl

もしかして、これらのディレクトリはWEBファイルを置くディレクトリ
直下に置かないとダメなんでしょうか?それとも、WEBファイルを置くディレクトリの
外に置くべきものだったりしますか?ここ読んでるんですが↓
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.basic.html
青マンモス本と書いてある事が微妙に違っていて、よくわからなくなってしまいました。。。
とりあえず、全部削除してもう一度始めから設定しなおしてみます。
0125あぼーんNGNG
あぼーん
0126あぼーんNGNG
あぼーん
012711403/05/06 16:37ID:aSOV5r0L
とりあえず、下記のようにすることでできるようになりました。
ありがとうございました。

アプリケーション用のSmartyのディレクトリをドキュメントルートの外に作成。
 templates/ templates_c/ configs/ cache/
cache/ templates_c/にwebサーバのオーナとユーザに設定し、
cache も templates_c も777で設定。

これで、下記の拡張セットアップまでできました。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/index.html

012811403/05/06 16:39ID:aSOV5r0L
しかし >>127 のような構成になっていると、templates/が、ドキュメントルートの
外なので tplファイルがWindows側からアップロードできません。

マニュアルによれば、「セキュリティの心配を避けるためにドキュメントルート外に
これらのディレクトリを配置する事が推奨されます。」とあるので
ドキュメントルートの中においてもセキュリティ面を除けば問題ないんじゃないか
と考えて、再度ドキュメントルート内に設定してみました。

ドキュメントルート内のSmarty用のディレクトリと、ファイル全てを
パーミッションを777、webサーバのオーナとユーザに設定しましたが
やはり >>114 のようなエラーが出てしまいます。

Warning: Smarty error: problem writing temporary file '/usr/local/apache/htdocs/smarty/php/cache//%%306/%%30660664/3eb76264e8132' in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042
Hello, Ned!

ドキュメントルート内に置くのは不可なのでしょうか?
他の方はtplファイルのアップロードはどうなさっているのでしょうか?
Webサーバで直接書いてらっしゃるのでしょうか?
何度もスミマセン。
0129nobodyさん03/05/06 18:19ID:6G0ArJzR
>>128
ドキュメントルートより1つ上の階層にファイルを
アップロードできないってのがなんか違うな。
0130nobodyさん03/05/06 19:48ID:???
>>128
なんでアップできないかがよくわからんな。
そんなことありえないと思うが、どのようにできないわけ?

で、そのエラーはやっぱりパーミッションの問題だ。
templates_c 以下にできるファイルのオーナーが違うでしょ?
013111403/05/07 11:05ID:ejEp7kPZ
>129サン >130サン レスアリガ�d

> で、そのエラーはやっぱりパーミッションの問題だ。
> templates_c 以下にできるファイルのオーナーが違うでしょ?

おっしゃるとおり、オーナー違ったし書き込み権限もなかった(´・ω・`)
ここの拡張セットアップ↓を使わなければうまくいくようになりました!
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.extended.html

ドキュメントルートより1つ上の階層にファイルをアップロードできないって変ですか?
/usr/local/apache/htdocsここの一つ上だから
/usr/local/apacheここがFTPした時に見えないってことですけど。

FTPの設定を変えたら見えるようになると思いますが、それって危険ではないかな?
そういうことじゃないでしょうか??あれれ?
0132 ◆AngelH/kMI 03/05/07 13:30ID:???
>>131
というか、そのあたりのファイルはユーザ別に作って
そのユーザのディレクトリに入れた方がいいのでは・・・。

ドキュメントルート
/home/username/www

Smartyのコンパイルディレクトリ
/home/username/lib/templates_c

自分ならこんな感じ。
013311403/05/07 15:32ID:ejEp7kPZ
>131san ありがとー!

なるほど。ユーザディレクトリ使えばできますね。
それでやってみます!

みなさん、長いことお付き合いいただきありがとうございました!
おかげさまで無事設定できそうで、大感謝です!
0134あぼーんNGNG
あぼーん
0135nobodyさん03/05/08 10:29ID:???
>>133
もし感謝してるなら、自分が色々わかるようになった時、他にわからない人がいたら
やさしく教えてあげるようにしてねー。
013611403/05/08 13:03ID:???
>135
オオー!素敵なコメントありがとう!
もちろん、絶対恩返しします!
0137nobodyさん03/05/15 22:03ID:???
>>135
ほんとうに素敵なコメントだ。
きみ、人間としてすばらしいよ。
心が洗われた。
013813503/05/16 10:49ID:???
>>136-137
そのコメントは僕の考えたコメントじゃないんですけどね…
僕も今まで色々質問ばかりしてきて、たくさんの親切な人にいっぱい教えて
もらいました。その時言われたのが>>135のような言葉です。

多分UNIX系の方々の考え方だと思いますが、僕もその考えに賛同して、
その恩を他の困っている人に返しています。

UNIX板など行くと商業サポートかと思うくらい、質問に答えてばかりの人が
いますが、多分その方も誰かから色々教わったたり、フリーソフトウェア、
オープンソフトウェアの恩を返しているんだろうなぁと思います。

#smartyというこんなに労力のかかっているソフトを無料で配布している
作者さんに対しても恩を返していることになるのかなぁ…
0139nobodyさん03/05/21 19:08ID:p8eRICbY
ちょっと質問です。
ひとつの変数を使いまわして、新たな値を入れたい時は、
毎回clear_assign()使った方がいいんでしょうか?
使わなくても動いてるみたいだけど。。。
0140あぼーんNGNG
あぼーん
014113903/05/21 19:13ID:p8eRICbY
も一つ質問です。
Smartyって、if とか loop が使えるじゃないですか。
これってとても便利なんですが、デザイナーさんもこういうのをある程度は
理解しないといけないですよね。

そうするとデザインとロジックの分離からちょっとずれてしまう気がするんですが
実際デザイナさんと作成されている方はこの辺どうされてるんでしょうか?
0142 ◆AngelH/kMI 03/05/21 20:46ID:???
>>141
if文は使ってないなぁ。
loopは使えないとお互い不幸になりそうなので使ってます。

・とりあえずloopとか変数とか無しでデザイン作ってもらう
・その後、自分がloop箇所や変数箇所を追記・修正
・デザインや文章に変更が生じた場合、命令部を破壊しないように変えてもらう

自分はこんな感じでやってるよ。
0143山崎渉03/05/22 01:57ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
014413903/05/22 10:34ID:???
>142 san
ありがとうございます。
デザインが先で、あとは {...} が付いている所はさわらないで
もらうって感じですね。

if 文使ってないというのは、例えば、状況によって画面の表示を変えたい時
どのようにされてるんでしょうか?権限によって画面を変えたいときとか。
0145 ◆AngelH/kMI 03/05/22 11:50ID:???
>>144
>権限によって画面を変えたいときとか。
ファイルそのものをわけちゃう。
Dreamweaver等でデザインファイル(html)をみるときもその方が
見やすいと思うのだけどどうだろう。

このあたりは人によって開発手法違うだろうから
他の人の意見も聞きたいなぁ。
0146nobodyさん03/05/22 19:56ID:???
サブディレクトリ、またはサブドメインごとに軽くデザインを変えるようなシステムを
みなさんはどのように作っていらっしゃいますか?

自分も今作っているのですが、設定ファイルがあちこち行ってしまって複雑になってしまい
ました。
title,descriptionなどを入れた、configs/sub.conf
サブごとのラッパークラス includes/sub.lib.php
そして、各phpファイル www/sub/index.php

みなさんはどのようにやっているんですかねぇ?
0147あぼーんNGNG
あぼーん
0148あぼーんNGNG
あぼーん
0149あぼーんNGNG
あぼーん
0150山崎渉03/05/28 17:07ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0151nobodyさん03/05/31 13:59ID:???
>>146

スクリプトファイルとテンプレートファイルを同じディレクトリに置いて管理してます。結局これが自然な気がします。ヘッダやフッタのような共通ファイルは別場所でまとめて管理。
PEAR を継承してテンプレート制御用のクラスを作りその中で Smarty を初期化してます。
この中で例えば $obj->smarty->display() のような関数に対して $obj->display() のようなラッパーを作り、そこで template_dir や compile_id の制御を行います。
でそのクラスをさらに extends して特定ブロックごとに合わせています。
実行はこんな感じ。
$tpl = new TemplateAreaName;
/* .. snip.. ここで処理&変数のアサインを行う */
// レンダリング
$tpl->showHeader();
$tpl->showMenu();
$tpl->display('index.tpl');
$tpl->showFooter();
0152nobodyさん03/05/31 19:10ID:???
>>151
>スクリプトファイルとテンプレートファイルを同じディレクトリに置いて管理してます。

なるほど。確かに更新するとき、両方のディレクトリを行き来したりする必要はなくなりますね。
これだと、テンプレートファイルも外から見えますよね?
問題ないんですかね。
0153nobodyさん03/05/31 20:19ID:???
>>152
う〜ん、、どうなんでしょう。今回 Smarty を初採用し、アプリケーションの完成度も 40% というところなので正直手探りでやっています。
もっと良い方法があればいいのですが。

ご指摘の危険性は考えましたが元々テンプレートをさくさく差し替えれるようにテンプレートには極力情報を埋め込まないようにしており、
テンプレートへの直接のアクセスも拡張子によるアクセス制限で回避出来ると思ってこの方法でやっています。
0154nobodyさん03/06/01 12:57ID:???
>>152
もう一つ思い出しました。
テンプレートの先頭にスクリプトを埋め込むか、テンプレートをPHPとして認識させて define などを使ってダイレクトアクセスを防ぐ手段も考えられます。
PHPBB のライブラリとかこういうやり方だったような。
0155nobodyさん03/06/07 06:42ID:dfQas5D8
Smarty 2.5.0 を、PHPのsafe_mode="On"で実行すると、warningが出るのですが、
これは私だけ?
確か、Smartyクラスモジュールの2691行目だったと思います。
0156 ◆AngelH/kMI 03/06/07 09:08ID:???
>>155
$smarty->use_sub_dirs = false;
で回避できない?

意味はマニュアル参照。
0157nobodyさん03/06/10 07:06ID:Fwh1UjxU
>>156
$smarty->use_sub_dirs = false;
やってますが、それでもwarning出てしまします。
ほかに思い当たる情報があればお願いします。
0158あぼーんNGNG
あぼーん
0159あぼーんNGNG
あぼーん
0160あぼーんNGNG
あぼーん
0161 ◆AngelH/kMI 03/06/10 17:19ID:???
>>157
というかそのwarningの内容出してくれないと何とも。
cacheディレクトリとtemplates_cディレクトリに
書き込み権限与えてる?
0162nobodyさん03/06/12 18:20ID:???
smartyで他のサイトのXOOPSのRSSを表示しようとしています。

googleで調べて、magpieというのがあったので、それを使おうとしています。
が、日本語が文字化けしてしまうので、変換させたいのですが、どこでどう変換させれば
いいのかがわかりませんでした。

以下が、smarty用サンプルコードをいじったものです。

$url = $_GET['rss_url'];
if ( $url ) {
// assign a variable to smarty for use in the template
$smarty->assign('rss_url', $url);
$rss = fetch_rss( $url );
// if fetch_rss returned false, we encountered an error
if ( !$rss ) {
$smarty->assign( 'error', magpie_error() );
}
//ここは文字化け対策成功
$rss->channel['title'] = mb_convert_encoding($rss->channel['title'], "EUC", "auto");

foreach ($rss->items as $item) {
//ここでどのような変数に代入すれば良いのでしょうか?
$title = mb_convert_encoding($item['title'], "EUC", "auto");
}

$smarty->assign('rss', $rss );
$item = $rss->items[0];

$date = parse_w3cdtf( $item['dc']['date'] );
$smarty->assign( 'date', $date );
}
0163nobodyさん03/06/13 04:36ID:???
自己レス

foreach ($rss->items as $key=>$item) {
$rss->items["$key"]['title'] = mb_convert_encoding($item['title'], "EUC", "auto");
}

でOK。
0164nobodyさん03/06/20 01:36ID:22HNzffu
mb関数使えない鯖で半角カタカナ全角にできるの?
0165nobodyさん03/06/20 10:35ID:???
>>164
できるよ
0166nobodyさん03/06/22 01:38ID:9+GBIMXB
>>165
どーやんの?
0167nobodyさん03/06/22 08:43ID:???
>>166
http://www.spencernetwork.org/
0168nobodyさん03/06/28 01:23ID:M0QDMJtS
>>167
わかんねー
0169あぼーんNGNG
あぼーん
0170あぼーんNGNG
あぼーん
0171あぼーんNGNG
あぼーん
0172あぼーんNGNG
あぼーん
0173あぼーんNGNG
あぼーん
0174あぼーんNGNG
あぼーん
0175あぼーんNGNG
あぼーん
0176nobodyさん03/07/12 19:16ID:P6mY9BCG
age
0177nobodyさん03/07/13 01:15ID:iGC1lgy5
Smartyってどれくらい普及してんだ?
使われているサイト知ってる?
0178nobodyさん03/07/13 13:49ID:???
>>177
自分の個人サイトだったら、ほぼ全部のページで使ってますが・・・
0179nobodyさん03/07/13 14:05ID:Qv0LVgul
PHPから別ウィンドウを立ち上げる事ってできるんでしょうか?
例えば、エラーチェックを行って、エラーに引っかかると
別ウィンドウでエラー内容を表示する、等
require もしくは header 関数を利用して。
もしくはそれ以外の関数、コーディングで。
Ncurses関数は客の鯖問題でPHPをリコンパイルできません。。
0180あぼーんNGNG
あぼーん
0181nobodyさん03/07/13 14:14ID:48FuQ70+
>>179
今手元にないから分からないけど、
"Professional PHP プログラミング"に、それらしい例がのっていたような。
0182nobodyさん03/07/13 14:17ID:Qv0LVgul
>>181 さん
早速ありがとうです。
調べてみます
0183nobodyさん03/07/13 15:19ID:???
http://pc2.2ch.net/test/read.cgi/php/1057947512/12
smartyと関係ない上にマルチポスト
0184nobodyさん03/07/13 16:23ID:???
MLにもポストしてたような?
できるの?コレ?
0185山崎 渉03/07/15 11:07ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0186nobodyさん03/07/15 17:55ID:wTgTaT8B
おお、久々にWebProg板に来たらSmartyのスレが。
コンテンツとデザイン〜の1です。

>>177
一応は本家公認のテンプレートエンジンって扱い(ですよね?)なので、海の向こうでの
使用頻度は高いんじゃないかと思います。xoopsに採用という実績もありますし。
国内でも自分みたいな糞田舎の情報システム部ですら2年前から使ってるので、それなりに
普及していると思いますよ。googleでも随分引っかかるようになってきましたね。
0187nobodyさん03/07/16 00:47ID:???
DBからデータ持ってきてappendしてページ作ってる場合、
APCとかZendOptimizerとか使える?
0188nobodyさん03/07/21 14:35ID:???
Smarty 使ってると何故かソースコードの記述が勝手にアサインされてるような、、
全く assign していない PEAR::raiseError のようなエラー処理の記述や print 文で勝手にエラー吐いてくれまつ。



…… Smarty のコードまで潜って 1h ほど戦って気付いた。
$tpl->display('hoge.php');
拡張子が .tpl ぢゃなくて .php で別ファイル指定してた。鬱だ氏のう _| ̄|◯
0189 ◆AngelH/kMI 03/07/22 08:14ID:???
>>187
別に問題ないかと。
APC1の頃は大丈夫だったし
現在はmmcache使ってるけど大丈夫だよ〜。
0190nobodyさん03/07/22 15:11ID:???
素朴な疑問。
appendとassignって何が違うんでしょう?
0191nobodyさん03/07/22 17:16ID:???
>>189
サンクス。やってみまつ。

>>190
assginは代入、みたいな。
appendはarray_push()、みたいな。
0192nobodyさん03/07/28 23:09ID:Qst4s2Al
Smartyって、ページ全体のキャッシュじゃなく、
ページの一部分だけキャッシュのすることってできないですか?

自分、いわゆる「ぱんくず(※)」をキャッシュにしたいんですよね・・・

※トップページから現在のぺージまでの道筋を表したもの。
例)Yahoo!とかだと

ホーム > コンピュータとインターネット > ソフトウェア > インターネット > WWW > ブラウザ

っていうあれね。
0193nobodyさん03/07/28 23:36ID:zAmscCpE
最高画質が揃った最高のサイトオープン!?
http://www3.free-city.net/home/espresso/white-snow.html
0194nobodyさん03/07/29 17:31ID:aKRM8GxJ
>>192
insertを使えば出来る。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/language.function.insert.html

カスタムプラグインでテンプレート内に{breadcrumb 現在の位置="hoge"}ってかくと
自動でずらっとパンくず表示してくれるの作ったけど便利だよ。
他のサイトにも再利用できるし。
0195nobodyさん03/08/01 14:03ID:???
テンプレートのデザインをいじる人にIBMホームページビルダーを
使わせたいんですが、Smartyタグのデリミタは何が無難でしょうか。

ページ内にCSSを書くこともあるのでデフォルトの { } は使わせたく
ないし、XOOPS2 なんかで定義されている <{ ]> でもいいかなと
思ったけど、< なんかに自動的に置換されてしまわないかと心配
です。それに、modifierのパラメータを " で囲むと " に置換
されるもよう。
0196山崎 渉03/08/02 02:23ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0197ぼるじょあ ◆ySd1dMH5Gk 03/08/02 04:51ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
0198nobodyさん03/08/09 06:43ID:ZOEKZBoK
さがりすぎage
0199あぼーんNGNG
あぼーん
0200nobodyさん03/08/09 07:56ID:0dlTg+8l
おまいら。

http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=doc&txt=htmltemplate

を氏蘭のか?
0201あぼーんNGNG
あぼーん
0202nobodyさん03/08/09 15:33ID:ZOEKZBoK
>>200
せめてキャッシュを実装してほしい。(中間ファイルでないよ)
タグが拡張できるようにしてほしい。
ちゃんとエラーハンドリングしてほしい。

このあたりを実装してくれれは少しは考えるが、
まだ今のところはSmartyのほうが使い勝手はいいな。
0203あぼーんNGNG
あぼーん
0204 ◆AngelH/kMI 03/08/12 12:14ID:???
Smarty2.6.0RC1 リリース。
とりあえず変更点確認中。
結構色々変わってるかな?
0205nobodyさん03/08/12 13:45ID:7lLuw4V/
RCなのに色々変わっているってのもアレだな。
いや、中身は見てないが。
0206nobodyさん03/08/13 10:54ID:???
>>205
2.5.0 -> 2.6.0RC1だから変更点は多いと思うぞ?
0207nobodyさん03/08/13 11:24ID:+vOr/IO1
>>206
普通、Release Candidate版って問題がなければそのままリリース版に
するものだから、仕様変更はその前の時点で落ち着いていて欲しいな。
その辺、PHPらしいと言えばらしいけど。
0208nobodyさん03/08/13 21:01ID:???
RC -> Release の間は仕様を変えないのが普通だけど
旧ver Release -> 新ver RC は仕様が変わっててあたりまえじゃないか?
0209nobodyさん03/08/14 12:09ID:Ayxn98z4
>>208
それもそうだ。
新ver RCと旧ver Releaseの間に新ver betaに相当するもの(CVS head)が
あったと考えれば問題ないな。スマソ。
0210山崎 渉03/08/15 22:32ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0211nobodyさん03/08/16 17:32ID:???
php側で、ログファイルから、1行1行読み出して、
それを配列にいれます。
その配列を1こずつ、ループさせて、テンプレートで
書き出すにはどうしたらいいんでしょうか。
勘で、

index.php
for($i=0; $buf=gets($fp, 8000); $i++)
{
    $msg[$i]=$buf;
    $smarty->assign('msg',array("$i"=>$buf));
}

出力側

{section name=msg_id loop=$msg}
    msg: {$msg[msg_id]}<br>
{/section}


とかやってみたんですが、うまくいかないです。
誰か教えてください。
0212nobodyさん03/08/16 17:45ID:???
補足ですが、
$fpの中には、ログファイルが入ってます。
0213nobodyさん03/08/16 18:04ID:???
appendつかったらできたー
(^○^)
0214nobodyさん03/08/23 08:07ID:qE2mijHa
怒涛の勢いで下がっていくスレage
0215nobodyさん03/08/31 23:16ID:OAFHlkE1
1週間ぶりに上げてやる
0216nobodyさん03/09/03 11:17ID:???
PHPカンファはSmartyばかりでしたな
0217nobodyさん03/09/11 19:36ID:???
te
0218nobodyさん03/09/12 09:35ID:???
age
0219nobodyさん03/09/18 10:27ID:bzSYta4I
patTemplateとどちらがいいですか?
0220nobodyさん03/10/02 10:36ID:ZE4wxlxf
質問です。
Smartyを使ったプログラムを業者に頼んだら、あがってきたソースは
タグまでphp側で書いてきました。最初print文を使ってるのかと思いました。

$str ="<form name=f action=aaa.php method=post>\n";
$str .="<TABLE cellSpacing=0 cellPadding=5 width=620 border=0 >\n";
$str .="<TR $ABC>\n";
   ・・・
$str .="</TR>\n";
$str .="</TABLE>\n";
$str .="</form>\n";

こんな調子で300行くらい。で、最後にデータをassignしてました。

$tpl->assign("str",$str);

で、これではSmartyの意味がないので、タグ(デザイン)とプログラムを分離してください。
と伝えた所「タグとプログラムの完全な分離はできません」と言われました。

私はできるんじゃないかと思っていたのですが、Smartyでは「タグとプログラムの完全な分離」
は不可能なのでしょうか?
0221nobodyさん03/10/02 12:19ID:???
その業者を使うのやめれ。デザインととプログラムを分離できないんならテンプレート使う意味ないじゃん。
端折ったコードで申し訳ないが
<table>
<tr>
 <th>header1</th>
 <th>header2</th>
</tr>
{loop}
 <tr>
  <td>{$data1}</td>
  <td>{$data2}</td>
 </tr>
{/loop}
</table>
Smartyはこんな風に使うんだよ、と教えてあげて。
0222nobodyさん03/10/02 12:20ID:???
その業者を使うのやめれ。デザインととプログラムを分離できないんならテンプレート使う意味ないじゃん。
端折ったコードで申し訳ないが
<table>
<tr>
 <th>header1</th>
 <th>header2</th>
</tr>
{loop}
 <tr>
  <td>{$data1}</td>
  <td>{$data2}</td>
 </tr>
{/loop}
</table>
Smartyはこんな風に使うんだよ、と教えてあげて。
022322003/10/02 13:42ID:???
>221=222さん。
ご返事ありがとうございます。やはりおかしいですよね。
私はPHPは初心者なのですが、納入されたSmartyをみて
びっくりしました。参考にしようと思ったのに・・・。
今修正してもらってます。

ついでにいうと、納入された物を見ていたら、仕様書に
書いてある事でやっていないことがあったので、それを指摘したら
「じゃあ、仕様書をなおしておきます」と平気で言い放ちました。

(゚Д゚)ハァ? …タマゲマスタ!
全然関係ない話スマソ。
0224nobodyさん03/10/02 22:25ID:???
その業者おもろいなぁ
0225nobodyさん03/10/02 23:06ID:???
スマーチーはある程度スクリプチングの構文にゃら分かんないとあんま意味無いよね。
HTML分離させて渡したら、良く分からないので
このHTMLをSmarty用に書き換えてとか渡された。
わかんね−なら最初っからSmartyでとか言うんじゃ寝ェよ
0226nobodyさん03/10/08 14:23ID:h0+MMd8V
ttps://www.stackasterisk.jp/tech/php/phpMvc02_01.jsp
上のサイトを参考にPHPでMVCってみたけど・・・しんどい・・
ログ読ませてもらったらよさそうなので今度のシステムで使わせてもらいます。
0227nobodyさん03/10/09 17:38ID:???
$a[0]->b = 1;
$a[0]->c[0] = 2;
$a[0]->c[1] = 3;
$a[1]->b = 4;
$a[1]->c[0] = 5;
$a[1]->c[1] = 6;
$tpl->assign("a", $a);

こんな感じで

{section name=loop1 loop=$a}
{section name=loop2 loop=$a[loop1]->c}
{$a[loop1]->c[loop2]} {* ← ここでエラー *}
{/section}
{/section}

とすると
unidentified token '[loop2]'
と怒られます(涙)
なにかいい方法ないでしょうか?

$a[x][a]
なら行けるんですけど、assignが面倒で。。。
022822703/10/09 18:42ID:???
これで解決できました!
失礼しました!

{section name=loop1 loop=$a}
  {foreach key=key item=item from=$a[loop1]->c}
    {$key} = {$item}
  {/foreach}
{/section}
0229nobodyさん03/10/10 00:49ID:???
あの、WinでSmartyは…
0230nobodyさん03/10/10 00:58ID:oTftSrdr
Smartyって、共有サーバでSSH使えない環境でも、
自分の、ファイルを置ける領域に「Smarty」という名のディレクトリをつくり、、ファイル群をそこにアップロードして、、

define("SMARTY_DIR","/Smartyへのパス・・・・・・/Smarty/");

require_once(SMARTY_DIR."Smarty.class.php");

とやれば、使えるのでしょうか?
0231nobodyさん03/10/10 01:27ID:???
>>230
で、試してみたのか?
023223003/10/11 00:46ID:U0DA9P6C
すいません、まだ環境がととのってないもので、試せないんです。。。
自分が借りてるレンタルサーバで、PHPが近々はいる予定なので、
関心があって訊いてみました
0233nobodyさん03/10/11 08:24ID:???
使えると思いますよーん
023423003/10/11 23:27ID:???
>>233
ありがとうございます。
入ったら試してみます。
0235nobodyさん03/10/14 23:32ID:???
>>230
PHPを実行するユーザーが、templates_cとcacheディレクトリを
読み書きできるように、場合によってはパーミッションを変更しないと
いけないのだが、そのへんは大丈夫?
023623003/10/15 00:05ID:???
>>235
パーミッション変えるだけなら、FTPソフト(FFFTPでもなんでも)でできるかと思ったけど、、、
ぼく、なんか勘違いしてます?(汗
0237nobodyさん03/10/15 06:29ID:???
>>236
それならOK
0238nobodyさん03/10/15 08:58ID:???
>>235
モチツケ
0239nobodyさん03/10/18 23:59ID:???
Smartyで再帰的な出力をテンプレートにすることはできますか?

たとえば、
<ul>
{foreach item=c from=$node}
<li>
{$c->name}
<ul>
{foreach item=cc from=$c}
<li>
{$cc->name}
<ul>
{foreach item=ccc from=$cc}
<li>
{$ccc->name}
{* ... *}
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
みたいな感じでありったけ出力したいのですが。
024023903/10/19 00:00ID:???
>>239
あ、スマソ
<ul>
{foreach item=c from=$node->children}
<li>
{$c->name}
<ul>
{foreach item=cc from=$c->children}
<li>
{$cc->name}
<ul>
{foreach item=ccc from=$cc->children}
<li>
{$ccc->name}
{* ... *}
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
0241nobodyさん03/10/20 09:35ID:???
>>239
これは再帰じゃなくて
ただの多重ループだと思う。
ためしてみた?
024223903/10/20 10:08ID:???
>>241
ループで書くとこうなってしまうってことです。
こういうのを再帰で書くのはSmartyでは難しいんでしょうか。

それでちょっと思いついたんですが、自分自身をincludeする
テンプレート片を作るとどうなんでしょう。自分でちょっとやって
みたら、変数のスコープの問題でつまづいてしまったんですが…。
024323903/10/20 13:16ID:???
再帰的includeでイケました! include でローカル変数名=値を渡して
やればうまくいきました。
0244nobodyさん03/10/21 14:41ID:???
$a[0]
みたいに配列を直接指定する方法ってありますか?
024524403/10/21 15:24ID:???
すみません
できないのは $a[0]->b[0] でした。
できないのかなー?
0246nobodyさん03/10/22 17:20ID:6TbJL0Yr
ネットで大人気のコスプレアイドルってニュースに惹かれてアクセスしたら
エラーがでてた。
これSmarty?
http://www.itv24.com/
0247nobodyさん03/10/22 18:48ID:???
>>246
そんなんわからんわい
0248nobodyさん03/11/07 15:10ID:KX2gQLRX
patTemplateのほうがいい。
0249nobodyさん03/11/07 19:42ID:ZxETm7Q5
マニュアルに、以下のようにありますが・・・
---
$template_dir
テンプレートファイルを置くディレクトリです。ファイルをインクルードする際にリソースの種類を指定しなかった場合は、
このディレクトリから探します。デフォルトは"./templates"で、実行中のphpスクリプトが置かれた場所に存在する
"templates"ディレクトリを探す事を意味します。

テクニカルノート: このディレクトリをwebサーバのドキュメントルート下に置く事を推奨しません。
---
この最後の行、なんでなんでしょう?

直接のぞかれて問題のあるようなテンプレート(tpl)ファイルを置く方が、問題だと思うのですが・・・
実際、XOOPSなんかも、ドキュメントルート下にtplファイル置いてますし。。。
0250nobodyさん03/11/07 21:10ID:???
>>249
何が言いたいんだ?

> 直接のぞかれて問題のあるようなテンプレート(tpl)ファイルを置く方が、問題だと思うのですが・・・
問題なんじゃん、じゃあこれであってるじゃん
0251nobodyさん03/11/07 22:32ID:???
コメントの内容とか見られたらまずいこともあるし
処理方法がばれればクラッカーに解析される可能性など。
見られないにこしたことはない。
0252nobodyさん03/11/07 23:57ID:???
>249
XOOPSの場合、レンタルサーバ等でhtml公開用のディレクトリ
以外がユーザに解放されていないケースにも合わせるため
XOOPSインストールディレクトリ以下に集中させる設計になっているから
必ずしもセキュリティ上ベストな選択がなされている訳ではないよ。
#敢えてレベルの低いところをターゲットとしている。全体的に
0253nobodyさん03/11/12 04:47ID:FrBzA+Qu
すいません、
Smartyを導入しようとしているのですが、
Warning: main(/usr/local/apache/smarty/Smarty.class.php):
failed to open stream: Permission denied in /usr/local/apache/htdocs/index.php on line 23
となってしまいます。

でも、httpd.confは、
User www
Group www
としていて(いつお、apacheをリスタートさせた)
で、
chwon www:www smarty
chmod 770 smarty

chwon www:www smarty/*
chmod 770 smarty/*

としたのですが、
やはり、前述のエラーが出てしまいます。

ただ、1回、正常に動作したことはあったんですよね。。。
そのあと、smartyのディレクトリを場所変えたり、
些細なことしか(なにをしたかは失念してしまいましたが)してないはずなのに、こうなってしまってます。

いったい、どこらへんを疑えばいいのでしょうか?
ポインタだけでも示して頂ければ幸いです。
0254nobodyさん03/11/12 07:29ID:FrBzA+Qu
smartyを入れる方法って、どれがベストなんでしょうか?対して変わらない?

Example 2-2. Smartyのインスタンスを作成する
require('Smarty.class.php');
$smarty = new Smarty;

Example 2-3. ライブラリファイルの絶対パスを指定する
require('/usr/local/lib/php/Smarty/Smarty.class.php');
$smarty = new Smarty;

Example 2-4. phpのinclude_pathにライブラリディレクトリを追加する
// php.iniを編集し、include_pathにSmartyのライブラリディレクトリを追加して
// webサーバをリスタートしたなら、以下を行ってください。
require('Smarty.class.php');
$smarty = new Smarty;

Example 2-5. 手動でSMARTY_DIR定数を定義する
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;

↓から引用しますた。
http://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/installing.smarty.basic.html
0255nobodyさん03/11/13 09:38ID:???
>>253
その些細なことが原因なんだと思うが。。。
わからなかったらもう1度最初からやったほうがいいと思う

chwon を chownにしたらよいかも
0256nobodyさん03/11/13 21:49ID:???
>>254
http://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/installing.smarty.extended.html
0257nobodyさん03/11/14 13:26ID:maWzYQwN
>>195
俺も最近使い始めたんだけど、JavaScriptやCSSのタグに引っかかって
鬱陶しい。結局何に変更しました?
0258nobodyさん03/11/17 14:01ID:EFGY3Z8y
青のマンモス本を見ながらSmarty導入しているんですが、
カスタム関数の追加ってどうやるんですかね?

動的な関数の追加はregister_function()を使用すればよいのですが、
もっと汎用的に使いたいんです。

マンモス本によりますと、Smarty.addons.phpというファイルに定義を
追加すればよいことになっているんですが、これはこの本の出版時点
のversion 1.5での設定法らしんです。

version2か2.5あたりから、そのあたりの使用が変わったらしい(changelog
を参照)
のですが、新しい設定法がわからなくて悩んでいます。

どなたかご教授願えませんか?
0259nobodyさん03/11/17 15:54ID:???
>>258
オレも最初はマンモス本でやった
いろいろ変わってるよね。
ほい。
ttp://sunset.freespace.jp/smarty/SmartyManual_2-4-1J_html/index.html

たぶんpluginsディレクトリ内の
function.xxxxx.php
を適当にコピーして内容もそれを参考にいじれば
いけたような。。。
0260nobodyさん03/11/17 15:56ID:???
>>258
そこまで分かっていて、日本語に訳されたマニュアルもあるのに
どうして読まないのでしょうか?

ttp://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/
0261nobodyさん03/11/17 18:48ID:6jAm6LT2
>>259、260

有難う御座います。
マニュアルは一応一読したつもりですが、グローバルなカスタム関数の
登録に関して記述が見当たらなかったもので・・・。

それでやってみますです!
0262nobodyさん03/11/18 15:58ID:???
chwon を chown にするついでに、chown -R と、-R もつけてみよう
0263nobodyさん03/11/18 17:06ID:???
おそっ
0264@@@@@03/11/19 00:18ID:Zaav6IG2
>
>‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜
> 
> ねえ、ちょっと・・・マジやばいんじゃない? この動画!!
>   ↓↓            ↓↓
> http://moro00.e-city.tv/ http://moro00.e-city.tv/
>
> ハッキリ言って、丸見え! 素人はお金のためなら何でもヤル。
> 撮られた時はこんなにバラ撒かれるとは思わなかったんだろね。
> けっこうカワイイ娘なのになぁ・・・ そのへん歩いてたりして!
>
>‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜
>
0265nobodyさん03/11/25 22:06ID:???
?(`д´)?
0266nobodyさん03/12/05 20:56ID:n07yC7qy
PHP質問スレッド Part11 から誘導されてきました。
http://pc2.2ch.net/test/read.cgi/php/1067635640/984

<p id="name">ここに名前</p>
  が、
$tpl->assign("name", "太郎");
  で
<p>太郎</p>

となるようにするにはどうすればいいのでしょうか。
今自分ことの環境はデフォルトなので、デリミタは { } となっています。
0267nobodyさん03/12/05 21:48ID:???
>>266
Smartyはセットアップできたの?
あなたの質問の内容よりよっぽど難しいと思うけど。
で、セットアップ出来ているとしたら、セットアップする際に参照した
マニュアル(例えば>>1には日本語マニュアルが紹介されている)の
最初の方にあなたの求める答えが載っているのだが。
026826603/12/05 22:20ID:???
ttp://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/
を見てインストールし、
require('guestbook/setup.php');
$smarty = new Smarty_GuestBook;
$smarty->assign('name','Ned');
$smarty->display('index.tpl');
まではうまく動くことを確認しました。

いまマニュアルを読み返しているのですが、それらしき箇所を発見することができません。
デリミタのカスタマイズは$left_delimiterと$right_delimiterの値を変えるんだと
思うのですが、これをどういじっても

<p id="name">ここに名前</p> ⇒ <p>太郎</p>

とはならないような気がします。
0269nobodyさん03/12/05 22:46ID:???
>>268
もう少しマニュアルを読めば分かると思うけど、index.tplに

<p id="name">{$name}</p>

と書けば置き換わるよ。
027026603/12/05 22:57ID:???
すみません、Smartyじゃできないみたいですね。

<element id="varname">ダミーの文字</element>

というテンプレートに対して、 assign('varname', 実際の文字) とすると
varnameというidの振られたエレメントの中のダミーの文字が置き換わって

<element>実際の文字</element>

となるようなライブラリを探しているんです。
これだと、「仕上がり見本」のHTMLをそのままテンプレートに使えるんです。
0271nobodyさん03/12/05 23:05ID:???
>>270
ああ、そういうことね。
では、テンプレートにifとelseを使って、$hogeがあるときは$hogeの内容、
$hogeが無いときはデフォルトの文字列っていう風にしてはいかが?
027226603/12/06 13:28ID:???
<p>{if $name}加藤剛{else}{$name}{/if}</p>

っていうことですか? これ Smartyを通さないと <p>加藤剛</p> を得られませんよね。

デザイナーは普通のHTMLエディタで何の変哲もないHTMLを書けばいい、
というのが狙いなので。
0273nobodyさん03/12/06 13:46ID:???
>>272
ああ、そこまでは無理やね。
というか、そんなの実現不可能だと思うけど。何使っても。

もしそういうライブラリーが見つかったら、報告よろしく。
027426603/12/06 15:07ID:???
RubyだとAmritaがあるんですよ。
ttp://www.brain-tokyo.jp/research/amrita/index_ja.html

PHPでというのが要件なので、探しているのです。
0275nobodyさん03/12/06 15:23ID:???
>>274
へー。勉強になりました。
そのうち誰かPHP版を作ってくれるかもね。
0276nobodyさん03/12/08 19:04ID:???
>>272
defaultを使った方が読みやすいよ。
<p>{$name|default:"加藤剛"}</p>
0277nobodyさん03/12/10 17:44ID:d5KtgpUB
「Chapter 4. 変数/phpから割り当てられた変数」というのは、assign などを
使って割り当てたもの、という意味なんでしょうか?
出力したい変数が多数あるのですが、テンプレート内で{$hoge} とする
だけでは出力しないものなんでしょうか?
0278nobodyさん03/12/10 17:48ID:???
<?=$vari?>
でいいじゃん
027927703/12/10 17:51ID:???
あああ・・ バカな質問をしてすみません。
ちゃんとマニュアルを読めば分かることでした(汗
assign などを使わないと、どこからも割り当てられていない変数を
表示しようとしちゃうんですね。あうー  はずかちー
0280nobodyさん03/12/12 00:15ID:BBYj3pBU
PHPは使えるけどSmartyを知らない人に、
「デザインとプログラムの分離」ができるという点で、
良さを伝えたいのですけど、PHPそのものでいいじゃんと言われてしまいます。

社内にSmarty広めたいのだけど、どうすればいいのだろう?

(キャッシュとかできて高機能だよ、とは言えるんだけど、
「デザインとプログラムの分離」の点で、説得できない・・・)
0281nobodyさん03/12/12 00:18ID:???
なんか、
{$vari}も
<?=$vari?>
も
標記的にはほとんどかわんないし、
べつに<?=$vari?>でイイじゃん
って思うんだけど、
なんでわざわざ
smartyなの?
0282nobodyさん03/12/12 01:04ID:C20HZJQr
処理用のPHPを作ってしまえば、処理と表示わかれるのは簡単だぞ。
おれはそうやって作ってる
かなり見やすいしさ。Smartyはちょっと見たけど、あまり魅力を感じない。
現時点ではね。
0283nobodyさん03/12/12 01:53ID:???
>>281
今時ショートタグ有効にしてあるのは嫌な感じ。
0284nobodyさん03/12/12 10:18ID:???
プログラマとデザイナが同じ人物なら
PHPだけでやればよい。
そうでないなら分けたほうが絶対便利。
あとはテンプレートエンジンの比較のはなし。

PHPで独自のテンプレートエンジンつくればいいっていう
頑固おやじはデザイナにそれの使用を強要して
使いにくいは、マニュアルもないはで、
「これだからプログラマは・・・」って言われるのがオチ
0285nobodyさん03/12/12 11:49ID:???
PHPで独自のテンプレートエンジン = smarty
0286nobodyさん03/12/12 11:51ID:???
俺はSmartyをメインに使ってるんだが、逆にSmartyを使わない
人たちは、

1.入力フォーム表示
2.内容確認ページ表示
 入力エラーがあった場合は1に戻ってエラーメッセージを表示
 「再入力」ボタンが押された場合は、入力内容を保持して1を表示
 入力エラーが無ければそのまま確認ページを表示
3.処理結果表示
 処理中に問題があった場合は2に戻ってエラーメッセージを表示

というフローを実現する時にどうしてるの?
0287nobodyさん03/12/12 12:01ID:???
1 2 3
でページを分けて
セッションを使いつつ
リダイレクトさせればOKじゃないの?
028828603/12/12 12:12ID:???
>>287
ファイルを分けた場合、2で生成したエラーメッセージは
どうやって1のフォームに表示しますか?
セッションに持つんじゃダサすぎるよね。
0289nobodyさん03/12/12 12:15ID:???
ヘーヘーヘー

セッションじゃだめなの?
別にPOSTでもいいけど

セッションがいやならPOSTにすればいいんじゃないの?
029028603/12/12 12:39ID:???
>>289
セッションが使えない場合にエラーメッセージが表示されなくなるのは
アプリケーションとして問題ありじゃないですか?
常にセッション前提の開発が出来るんなら別ですけど。

あと、2でPOSTにエラーメッセージを詰め込んでから
1にリダイレクトしても意味ないような気がしますが…。
0291nobodyさん03/12/12 12:43ID:???
セッションが使えない場合ってあるのか?
それならポストが使えない場合、GETが使えない場合とか
考えるとキリがないと思うんだが。

あと、何で意味無いのかわからない。
じゃあ、どうするの?

というか、これ全然smartyに関係ないと思うんだが。
029228603/12/12 12:53ID:???
まあ、ショボいロードバランサーを使ってるケースでもない限り
今時セッションが使えない場合ってのはないかもね。
でも、POST/GETメソッドが使えない場合なんてある?

リダイレクトってLocationヘッダを使うってことだよね?
そうすると$_POSTの内容ってまっさらになってしまう気がするんだけど。

俺の場合、>>286で書いたフローを実現するのに単一のファイルに
input()、confirm()、commit()みたいな関数を作って処理してる
のだけど、こういう構造にするとHTMLとコードを混在させるのはまず
不可能なのでHTML部分はSmartyで別ファイルにしています。

で、「Smartyイラネ」とか言ってる人はこの辺どうやってるのか不思議だったんですが。
0293nobodyさん03/12/12 13:27ID:???
一般的なphpの使い方

<?php
〜〜〜〜〜
〜〜〜
処理、このなかで出力するテキストなどを
変数にセット
〜〜〜
?>

<HTML>
<BODY>
<? echo "$phpでセットした変数"?>
<?=$phpでセットした変数?>
0294nobodyさん03/12/12 14:02ID:???
私の場合は、
main.php:
<?php
if (!is_numeric($hoge)) {
$status = "ng";
$message = "数字を入力して下さい";
}
if ($status == "ok") {
include ('complete.html');
exit;
}
include (question.html);
exit;
?>

question.html:
<?php print $message; ?>
<form action='main.php'>
<input type='text' value='<?php print $hoge; ?>'>
</form>

みたいにして、question.html をドリームウェーバーor 手書きで編集してました。
なので、あまりSmarty は必要ないかな、と思っていましたが、入力エラーのときに
option やcheckbox のvalue 値を引き継ぐのはSmarty の方が便利でした。
0295nobodyさん03/12/12 15:12ID:???
入力エラーってどういうケースを想定してるのかしらんがjavascriptで処理しちゃいかんの?
わざわざ鯖に仕事させなきゃ駄目?
0296nobodyさん03/12/12 15:14ID:???
>>295
クライアントがJavascriptを切っていたらどうする?
0297nobodyさん03/12/12 15:48ID:???
なんだかアホなはなしやめようよ

javascriptとかリダイレクトとか。
そんなの言ってるの趣味でやってる学生とかだろ?
そんなのスルーでお願いしますよ
029828603/12/12 16:07ID:???
>>295
商品情報編集ページを作るとして、入力してもらった商品IDをもとにデータベースを
見に行ったが該当する商品が無かった場合に「入力されたIDは存在しません」みたいな
表示をする場合はどうしますか?

そもそも、クライアントサイドでの書式チェックとサーバサイドでの内容チェックは別物ですよ。。
0299nobodyさん03/12/12 19:57ID:???
{html_options}を使うと<option>にlabel属性がついちゃいますけど、
みなさんは無視してます? ソースに手を付ける? 
それとも付いてると何かいいことがあるのかしらん??
030028603/12/12 20:15ID:???
>>299
<label>要素が付くと、チェックボックス部分だけでなく文字列を
クリックしてもトグルできるようになるよ。

[x] この文字列をクリックでもOK

IEはどうか知らんけど、Firebirdではちゃんと動くから俺は
気にせず使ってる。
0301nobodyさん03/12/12 21:55ID:???
javascriptをバンバン使ってる企業サイトもあるわけだが。
030228603/12/12 22:37ID:???
>>301
JavaScriptをオフにするとまともに閲覧できない企業サイトもあるわけだが。

と言うか別にJavaScriptを使うのは構わないんだけど、エラー処理を
JavaScriptだけで行おうとするWebプログラマはアホということ。
0303nobodyさん03/12/13 00:34ID:lh7ZJy1b
smartyもこれを使う人もsmartじゃないんですね。w
0304nobodyさん03/12/13 00:44ID:???
>>303
wを使う人
0305nobodyさん03/12/13 14:25ID:???
デザインとコンテンツの分離とか言ってる奴に限ってコンテンツは糞。
0306nobodyさん03/12/13 15:55ID:???
それはディレクターの責任ですから
0307nobodyさん03/12/13 18:03ID:???
もう少し正しく言うなら"デザインとロジックの分離"なワケで
あのスレは途中でタイトルが間違ってる事を指摘されてたワケだが。
実際に仕事とかで「デザインとコンテンツの分離が・・・」とか言い出したヤツがいたら
あぁコイツは分かって言ってねーんだなぁと9割方思っていい。
0308nobodyさん03/12/13 19:59ID:???
>>292
んんと、Smarty使ってるような感じで
そのまま別のPHPファイルをincludeしてる
SmartyはSmartyで便利と思うんだけど
Smartyのコードだと外部ファイル側で小回りが利かなくなるというか・・・
0309nobodyさん03/12/13 22:37ID:ittzKU4p
SmartyをWindows上で利用しているのですが、以下のエラーが出て動いてくれません。

Warning: Smarty error: problem writing temporary file '/home/sites/site40/templates_c/\%%117\%%1172603085\3fdb11ae15d5f' in d:\home\sites\site40\smarty\Smarty.class.php on line 1144
Warning: touch(): Unable to create file /home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php because No such file or directory in d:\home\sites\site40\smarty\core\core.write_compiled_resource.php on line 31
Warning: fetch(/home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php): failed to open stream: No such file or directory in d:\home\sites\site40\smarty\Smarty.class.php on line 1291
Warning: fetch(): Failed opening '/home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php' for inclusion (include_path='.;c:\php4\pear') in d:\home\sites\site40\smarty\Smarty.class.php on line 1291

チェックすべき点や参考になるサイトなどがあったら教えていただけないでしょうか?

環境
Windows2000 professional
php4.3.4
031030903/12/13 22:44ID:???
>>309
$smarty->template_dir = '/home/sites/site40/templates/';
という風にしていたのを
$smarty->template_dir = 'd:/home/sites/site40/templates/';
としたら動きました。

スレ汚し申し訳ないです。

今からしっかりと勉強してSmartyの世界につかろうと思います。
031128603/12/14 01:13ID:???
>>308
んー、なるほどね。
俺は逆にincludeするファイルがPHPで書かれていると、<?php ?>タグが
デザイン(HTMLタグ)とごっちゃになっちゃう気がするのでSmartyにしてます。

いざとなればSmartyのテンプレートファイル中に
{php}
// PHPのコード
{/php}
とすることもできちゃうし。
まあ、実際にはPHPのコードを書かなければいけない状況になったことは無いですけど。
031230803/12/14 04:19ID:???
>>311
俺もSmarty化しようと思って
実際使ってみてやっぱり辞めた派なので
HTMLタグとの区別がスッキリするというのはよくわかります

辞めた理由としては
やっぱりインラインでデザイン側にいくつか変数欲しくなった時でも
いちいち呼び出し側でassignしなきゃいけないのが面倒でした

今は事実上Smartyみたいな構成にして
PHPコードで書かれたデザイン用ファイルを用意して普通にincludeしてます
HTMLタグとの混合はショートタグでだいぶましにはなります
それでもやっぱりスマートじゃないよう気がしますが・・・
やっぱりPHPネイティブのテンプレート機構が
あるのが一番いいなと思います
031328603/12/14 13:22ID:???
>>312
「いちいち呼び出し側でassignしなきゃいけない」ということは、
デザインとロジックの分離が強制されるということなので気にしないようにしてます。

あと、ショートタグを有効にしているとXHTML(XML)を記述する時にハマるのも
気をつけたいところ。
0314nobodyさん03/12/14 13:33ID:???
>>312
$aaa->c1 = "111";
$aaa->c2 = "222";
$tpl->assign("aaa", $aaa);
$tpl->display("xxxx.tpl");
-------------------------
{$aaa->c1} {$aaa->c2}

変数増えても平気だ
0315nobodyさん03/12/19 10:20ID:hqiHAaNv
Smartyを便利に使用していますが,foreachやsectionなど配列をループさせる
関数はありますが単純に数値でループさせるにはどうすればいいのでしょう。
例えば10という数値をアサインして,テンプレートで10回処理を繰り返す
(例えば改行を10回入れるなど)といった処理です。
forは無いようですし,doやwhileもありませんよね?
0316nobodyさん03/12/19 11:22ID:???
>>315
Smartyの良いトコの一つとしてプラグインによる拡張があるワケで、
こういうタグが無いぞ!と思ったら
http://smarty.incutio.com/?page=SmartyPlugins
から探すか、もしくは自分で作る。
ちなみに回数を指定して繰り返したいなら、BlockRepeatPluginで
そのものズバリの事が出来る。
0317nobodyさん03/12/19 11:27ID:???
>>316
なるほど。
forのような基本的な関数が無いはずが無いとマニュアルを何度も探していたのですが,
プラグインを使うのですか・・・

紹介していただいたサイトとプラグインをよく読みます。
ありがとうございました。
0318nobodyさん03/12/19 13:00ID:???
>>317
forやdoやwhileは、その条件や回数がテンプレート(View)とは無関係なものだから
テンプレート内では使えないようになってるんでしょう。

改行を10回入れたい場合はコードのほうで、
$smarty->assign('loop', 10);
とやっておいて、テンプレートでは

{section name=foo loop=$loop}
<br>
{/section}

でOK。
0319nobodyさん03/12/19 13:06ID:???
>>318
そ、そうなのか?
0320nobodyさん03/12/19 13:15ID:???
>>319
そうなのか?ってどっちのこと?
forやwhileが無い理由はそういうことだと思うけど。

動的にページの要素を増減させたいケースっていうのはつまり、
「商品の数が増減するからテーブルの行も増減する」とか
「User-Agentによって一部分を表示させたくない」とか
ロジックによる処理ばっかりでしょ。
032131703/12/19 13:36ID:???
>>318
> {section name=foo loop=$loop}
> <br>
> {/section}

確認しました。こんなことが出来るんですね。
何で今まで試さなかったんだろう・・・orz

いままで,array_padでダミーの配列を作ってループしていたので,
メモリも節約できて助かります。
$smarty.section.hoge.indexも使えるのでsectionが使えれば万々歳です。

ありがとうございました。
0322nobodyさん03/12/19 15:42ID:???
ソース見てみたら
$output .= "{$section_props}['loop'] = is_array($attr_value) ? count($attr_value) : max(0, (int)$attr_value);\n";

ってことだった。
loopには配列しか指定できないもんだと思ってたよ。
0323nobodyさん03/12/20 21:52ID:???
だれかDreamweaverとかでSmarty使ってる人いません?
やっぱりみんな手で組んでるの?
これじゃ、せっかくデザインを分離できてもなーー
0324nobodyさん03/12/21 05:53ID:???
>>323
使ってますよー
0325nobodyさん03/12/21 10:01ID:???
>>324
ど、どうやって?
ヒントでも教えて〜
Smarty&PHP側に細工?
ドリ側で細工?
0326nobodyさん03/12/22 21:59ID:???
>>323
Dreamweaver使ってないんだけど、どういう問題?
SmartyタグのせいでHTMLが正しく解釈されず、デザインビューがメチャクチャになるって事?
多少の対策として、デリミタを{ } から <{ }>みたいにしてるね。xoopsとかは。
0327nobodyさん03/12/23 00:10ID:???
>>326
デザイナが編集するときにきれいに表示されないってことです。
{section xxxx.....}
とかはそのまま表示されてしまいますし
もちろん
{if xxx}
xxx
{else}
xxx
{/if}
とかも表示が崩れます。
if文の中でタグの開始とか終了とかやってると顕著です。

xoopsかー
ちょっと見てみようかな
0328nobodyさん03/12/23 00:41ID:???
>>323
そういうときに >>266-275 のAmritaが良いわけですよ。Rubyだけど。

032932303/12/23 23:30ID:???
>>325

自分は、趣味で作ってるサイトでやってるだけなので、
ドリにタグが出ても、問題ないです。

職場でもphpとかで開発してるけど、
Smarty?何それ?と言われた(泣く
0330nobodyさん03/12/24 01:11ID:???
DreamweaverのSmarty Extension・・・いつになったら・・・ウウゥ・・・
0331nobodyさん03/12/24 01:24ID:???
この手の奴いくつかあるけど
どいつもこいつも独自仕様なんだよな。
大差ねえ野に。
0332nobodyさん03/12/27 20:35ID:???
smartyって別に個人が1人でレイアウトからプログラムまで全部やる場合は
特にメリット無いよね?
オーバーヘッドが無いとか色々書いてあったけど、
別にこれを使う事で開発が楽になったりプログラムの実行速度が速くなったりはしない?
0333nobodyさん03/12/27 22:12ID:???
>>332
その色々がもたらすメリットが理解できないなら使っても一緒かな〜と。
オーバーヘッドの意味、分かってる?
0334nobodyさん03/12/28 09:49ID:???
>>333
クラスとか関数の定義を読み込んだりする
最初にかかる時間の事だと思ってますが
ちゃんとした本とかで勉強した事が無いので合ってるかどうかは分かりません。
0335nobodyさん03/12/30 11:17ID:???
現在333はオーバーヘッドの意味を勉強中です。
しばらくお待ちください。
0336nobodyさん04/01/02 22:22ID:???
あけましておめでとうございます。
今年もSmartyを使っていろいろ開発していきましょう!

という自分は、現在自分のサイト(趣味で作っているヘボサイト)を
勉強をかねてSmartyを利用して再構築しています。

正月休みは、マニュアルを読みながらひとつひとつの動きに
感激しっぱなしでした。

仕事でJavaServletやJSPを利用したWebシステムの開発をしているので、
Smartyは非常にとっつきやすいです。
0337nobodyさん04/01/04 01:15ID:LkXOe+SC
英語圏の人向けにXHTMLでページをつくってるんですが、
tplファイルに<?xml version="1.0" encoding="utf-8"?>
としても特に問題起こらないですか?
(もちろんtplファイルの文字コードはutf-8。ただし、phpスクリプトはEUC)


0338nobodyさん04/01/04 09:10ID:???
>>337
やってみたの?
033933704/01/05 22:52ID:SHqc05oc
>>338
いちお、いまんとこ問題なさげなんだけど・・・
0340nobodyさん04/01/05 23:33ID:???
>>337を含め、最近のphp界隈は問題ありすぎ
0341nobodyさん04/01/06 16:18ID:???
>>340
PHPどうのこうのっていう以前の問題が多すぎだね。
建築しらない人が、日曜大工でビル建てようとしてるような人が多すぎる。
0342nobodyさん04/01/11 21:34ID:ESnicSkb
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、Smartyはスマートだ。
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|
0343nobodyさん04/01/12 02:03ID:???
どこがスマートだよ。
全然デザインとロジックの分離ができてねーじゃん。
糞杉。
0344nobodyさん04/01/12 03:28ID:???
いくらスマートなモノでも使い方がスマートでないとスマートにはなりませんよ。
0345nobodyさん04/01/12 12:58ID:???
スマートなら自前で実装するよ
0346nobodyさん04/01/12 14:36ID:XY33XXMX
     ______
=@   /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、Smartyは名前の通りスマートだ。
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|
0347nobodyさん04/01/12 19:22ID:???
古いAAだな。久々に見たぞ
0348nobodyさん04/01/12 23:29ID:???
いまやハワイのチャンピオンだからな
0349nobodyさん04/01/18 13:31ID:stryZ884
盛り上がっていこうゼ
0350nobodyさん04/01/19 08:48ID:vtz23jMl
2.6.1
0351nobodyさん04/01/28 19:47ID:???
QuickFormとSmartyの連携
0352nobodyさん04/02/12 11:33ID:KTntpHdL
smartyと相性のいいホームページ作成ソフトって何ですか?

私はホームページビルダー7を使ってますが、画面をデザインした
あとに、必ずHTMLを見て修正する必要があるんです。

例えば、適当にHPビルダーでフォームとか配置して部品を付けると、
それぞれの部品が<form>でくくられてしまったり・・・

なのでデザイナさんに画面を作ってもらっても、結局それをデザイ
ンを壊さないようにエディタで修正するハメになるのです。

ホームページ作成ソフトで作ったら、そのHTMLは見なくていい。
そんなホームページ作成ソフトはないでしょうか?
0353nobodyさん04/02/16 06:31ID:fxjTO9Xi
>255
同感です。
私も、いいホームページソフトを教えてほしいです。
0354nobodyさん04/02/18 05:55ID:Rpd68eXE
>255
Dreamweaverなどは?
いちおうPHPなどにも良さそうなことがメーカのHPに書いてありますが・・・
0355nobodyさん04/02/18 08:05ID:bgploQOu
すいません、Smrtyの入れ子ってどうやるのでしょうか?
もともと、
------------------------------------------------------------
<html>
(略)
{php}
include("./category/" . getParam( 'cat' ) . ".inc");
{/php}
(略)
</html>
------------------------------------------------------------
というtmpl(テンプレートファイル)があるのですが・・・

(ちなみに、getParam関数は↓こんなかんじ)
function getParam( $name )
{
$val = $_GET[$name];
if( $val == "" ){
$val = $_POST[$name];
}
return( $val );
}

で、catの値によっては、
includeしたファイルの中で、さらにsmartyを使いと思ってます。
マニュアル見たり試行錯誤してもわらなかったので、
どなたかご存じの方、いらっしゃったら、教えていただければ幸いです。
035635504/02/18 09:04ID:???
自己レス
incファイルの中で、

global $smarty;

$smarty->assign("foo", $line[1]);

$smarty->assign("bar", $line[2]);

とやったらできてしまいました。
(するとこれは、「入れ子」とはいわないのかな。まぁいいや)
035735504/02/18 09:07ID:???
前言(>>356)撤回。何も表示されてませんでした。んー、どうすればいいのだろう。
0358nobodyさん04/02/18 09:44ID:???
>>355
そもそもその incファイルでは $lineは定義されているのか?
俺ならテンプレートリソースにするのが簡単かつ安全だと思うけど。

あと、脱字大杉
035935504/02/18 10:55ID:???
>>358さんありがとうございます。
>$lineは定義されているのか?
はい。

「テンプレートリソース」というものを知らないので、勉強してそっちでやってみるかもしれません。
ありがとうございます。

>あと、脱字大杉
どうもすみませんでした。
0360 ◆AngelH/kMI 04/02/28 23:27ID:???
久々に書き込み。
引っ越しして超ナローバンドなためきつい・・・。
後2週間はこのままかと思うと気が重いっス。

http://sourceforge.jp/projects/phpoot/
ネタ投入。
見る限りではなかなかよさそうなんだけど、
誰か使ってみた人いますか。
自分所では動作しなく・・・。

>>352-354
自分はDreamweaver使ってますよ。
設定すれば勝手に書き換えたりしなくなるし。
(比較的)まともなHTMLはき出してくれるので、ver1.2の頃から愛用しています。
0361nobodyさん04/02/29 08:02ID:???
>>360
俺も翻訳者のwebみて知ってこれ良さそうと思ったけど
何ひとつサンプルが動かないのは如何なものか(´д`;)
ぜったい テストされてねぇ〜・・・・・

とりあえずソース何ヵ所かいじったら動いたけど<img><br>タグ閉じてないよっておこられまくって
ふて寝しますたorz
0362 ◆AngelH/kMI 04/02/29 14:47ID:???
>>361
む、動きましたか?
触った箇所教えてくれると助かりまつ。

<img><br>が動かないのは、XHTML準拠、とのことでエラーになってるのかと。
それぞれ
<img src="hogehoge" />
<br />
にして試してみてー。
0363nobodyさん04/02/29 16:53ID:???
>> 360-362
phpoot::_compileに渡す compiled_fileの作成の仕方が間違ってるね。
存在しない pathに対して realpath()を使っていらっしゃる。

× $compiled_file = realpath($this->_compiled_dir . '/' . basename($this->_template_file) . PHPOOT_EXT);
○ $compiled_file = realpath($this->_compiled_dir . '/' . basename($this->_template_file)) . PHPOOT_EXT;

<img><br>ってのはサンプルにはないよね?
試しに書いてみたけど、<img> -> <img />に補正されるし、<img><br>は削除されるし、
こいつは XML_HTMLSaxのせいか? PEAR使ってるなら、命名規則も従ってくれると良いね。

Amrita意識してるようだけど、この品質なら、今から使うメリットはなさそうだと思った。
Smartyは枯れてきてるし、PEARなら HTML_Template_Flexyのほうが`まだ`出来が良い。
0364 ◆AngelH/kMI 04/02/29 21:46ID:???
>>363
サンクス。
こっちでも一応動作確認出来ました。
まあ、今後に期待ってことでSmartyに戻ります(笑

うちの環境だと、一回目のアクセス時(つまりcompileするときに)
phpoot.parser.phpがundefined index出しまくりで気になる・・・。
0365nobodyさん04/03/08 07:32ID:???
{$hoshu}
0366nobodyさん04/03/11 16:02ID:???
書籍のデータベースを検索して表示するページを作っています。
現在すべてのページで
<?php
include 'header.php';
//メイン処理
include 'footer.php';
?>
としていますが、これをSmarty で記述する場合、
main.tpl の中でindlude or include_php するのが良いのか、
main.php の中で、
func_assign_header();//ヘッダー用の表示をアサインする関数
func_assign_footer();
$smarty->display('header.tlp');
$smarty->display('main.tlp');
$smarty->display('footer.tlp');
みたいにすれば良いのか、或いはもっとべつの良い方法があるのか・・・というより、
ありそうだなあ、と悩んでいます。。。
>>96 さんとほぼ同じケースだと思うのですが、アホなので>>97 さんのアドバイスが
良く分かっていません。
ヒントへのポインタでも結構ですのでアドバイスをお願いできますでしょうか??
036736604/03/11 16:11ID:???
言い忘れていました、header の部分も、ページごとに動的に変化します。
今のところ<title>xxxx</title> に表示するデータの一部を入れているだけですが。。。
0368nobodyさん04/03/12 01:00ID:9XQjrMWL
最新のPHP+SmartyでSafe modeをonにすると...
pluginsがエラーになるんですけど...
ちなみにSmartyは/usr/local/lib/php/Smarty/以下にインストール
しています。オーナーはrootです。
アプリのオーナーはroot以外のユーザーです。

プログラムは{html_options}のリファレンスのサンプルです。
エラーメッセージは
Fatal error: Smarty error: [in XXXXXXXX.tmpl line nn]: [plugin] unknown tag - 'html_options' (core.load_plugins.php, line 118) in /usr/local/lib/php/Smarty/Smarty.class.php on line 1102

Safe mode系のエラーの場合は
SAFE MODE何たらかんたらとかuid/gidがなんたらというメッセージが多いと思うんだけど...

アプリのオーナーをrootにしたりSafe modeをOffにすると正しく動くのよね。
php.iniがいけないのかなぁ?
0369nobodyさん04/03/12 13:35ID:???
>>366
自分でテンプレートもPHPのコードも書くならどっちでもいいんじゃないすか?
0370nobodyさん04/03/12 21:47ID:???
>>366
Smartyのサブクラスを作成(例:mySmarty)して、
親クラスのメソッド:display()をサブクラスでオーバーライドしれば?

mySmartyの生成時にヘッダ・フッタのデータを渡して、
$mySmarty->display()したときにmySmarty内部で、
ヘッダ・フッタをassignして、親クラスのdisplay()を呼ぶみたいな。
0371nobodyさん04/03/13 00:31ID:???
>>366
main.php では、
func_assign_header();
func_assign_footer();
$smarty->display('main.tpl');

main.tlp 内で、
{include file="header.tpl"}
{include file="footer.tpl"}

僕ならこうする。
どうするのが良い悪いよりは好みの問題でしょうね
0372nobodyさん04/03/15 13:25ID:???
>>366

先週から使い始めました。

header.tlp
footer.tlp

上記の2ページの内容or作る人のスタイルにもよると思いますが、
ヘッダー・フッターが静的なHTMLなのであれば、テンプレート側で読み込んだ方が、
テンプレートを作る人のことを考えれば理解しやすいんじゃないでしょうか?

テンプレート作る人が、呼び出し元のPHPを読まないと、
ページ構成を理解できないっつうのは、Smartyの利点を1つ殺してる気もするし・・・
0373nobodyさん04/04/20 02:11ID:???
Smarty plugin のpager
http://smarty.incutio.com/?page=pager
これの使い方が今ひとつ分かりません。どなたかヒントいただけないでしょうか?
0374nobodyさん04/04/20 19:31ID:???
PEARのPagerとかDB Pagerを参考にしてみたら
使った事ないからなんともいえないけど
037537304/04/21 14:27ID:???
アドバイスありがとうございます。PEAR の方を見ながらいろいろと試行錯誤してみました。
今のところ次の方法で使えてます。

基本的には
{pager rowcount=レコード総数 limit=ページ内に表示する数 txt_first=""}
で、各ページへのリンクがずらずらと並びます。

細かなパラメータは、
show='page' or 'record'  //表示される数値をページ数とするかレコード数とするか
posvar='now_page'  //現在位置を識別するための変数名
forwardvars=$forwardvars  //$forwardvars=array("hl"=>"ja","lang"=>"lang_ja") など、
ページ間で引き継ぎたい変数と値
txt_prev='<<<' //「前のページ」
txt_next='>>>' //「次のページ」
separator='-' //ページorレコード数の区切り文字
shift='1' //posvar の初期値
・・・等々

なお、こちらで使用しているスクリプトとの兼ね合いから、function.pager.php の142 行目の
!empty($value) をisset($value) に変更する必要がありました。注釈文にあるように、
$_REQUEST で変数を受け取るなら変更は必要ないのかも知れません。

で、一応使えるようにはなったのですが、参考にしたPEAR/Pager のほうが使いやすそうですね。
Smarty との連携をどうすれば良いのかまだちょっと見えていないのですが・・・。
#PEAR のDB_Pager って今後はDB_common::limitQuery() の方を使うほうが良いのかな??
0376nobodyさん04/04/21 17:55ID:???
>>375
limitQueryでもlimitつけたSQLでも同じなんだけど
SQLの時点でlimitをつけちゃうと実質の総レコード数が取れない
25レコードあったとしてlimit 10, 20のクエリでnumrowsすると10が返って来る
ページャのロジック書こうとすると総件数がいる
DB_Pagerの便利なとこは引数投げるとfrom-limit間のレコードだけを
fetchする状態の結果セットを返してくれる
だから俺はDB_Pager使ってる
0377nobodyさん04/04/23 13:02ID:???
{section} のネストをうまく動作させることが出来ません。

{section name=book loop=$main_dat}
{$main_dat[book].name}
{$main_dat[book].memo}
  {section name=book_sub loop=$sub_dat[book]}
  abc
  {$sub_dat[book][book_sub].job}
  {$sub_dat[book][book_sub].personid}
  {$sub_dat[book][book_sub].name}
  {/section}
<br>
{/section}
section の例を見ながら↑のようにしてみたのですが、内側のループが実行されません。
元になるphp 側では、
while ($i < $num) {
  $main_dat = $result[$i];
  $smarty -> append("main_dat", $main_dat);
  $j = 0;
  while ($j < $sound_sub_num) {
    $sub_dat = $result_sub[$j];
    $smarty -> append("sub_dat[$i]", $sub_dat);
    $j++;
  }
  $i++;
}
こんな感じでassign しています(こまかな処理は省略しています)。
037837704/04/23 13:03ID:???
また、{debug} でみると変数には
{$main_dat}
Array (2)
0 => Array (3)
id => 266
name => fmlバイブル
memo => empty
1 => Array (3)
id => 267
name => PostgreSQL完全攻略ガイド
memo => empty
{$sub_dat[0]}
Array (2)
0 => Array (3)
personid => 2437
name => 深町某
job => 著者
1 => Array (3)
personid => 358
name => 佐々木某
job => 監修
{$sub_dat[1]}
Array (2)
0 => Array (3)
personid => 291
name => 石井某
job => 著者
1 => Array (3)
personid => 648
name => 山本某
job => 出版
こんな感じに表示されます。
037937704/04/23 13:04ID:???
php から渡された変数には値が入っているので、ループ無しで直接{$sub_dat[0][0].job} としても表示されませんでした。
バッククォートあたりだとは思うのですが{`$sub_dat[0][0].job`} とすると
syntax error: unrecognized tag のFatal error が出てしまいます。

アドバイスをお願いできますでしょうか? 長文ごめんなさい。
038037704/04/23 13:42ID:???
あああ。。。
{$sub_dat}
 Array (2)
  0 => Array (2)
   0 => Array (3)
    personid => 2437
    name => 深町某
    job => 著者
   1 => Array (3)
    personid => 358
    name => 佐々木某
    job => 監修
  1 => Array (2)
   0 => Array (3)
    personid => 291
    name => 石井某
    job => 著者
   1 => Array (3)
    personid => 648
    name => 山本某
    job => 出版
こうならないとsection の例文は使えないんですね。すっかり煮詰まってました。
php 側をちょっと直せばできそうです。うう、、、スレ汚し済みませんでした。
0381nobodyさん04/05/14 17:14ID:???
smartyって、
外部ファイルを書き出すことはできますか?
038238104/05/14 19:38ID:???
あるいは、PHP版HTML::Templateで外部ファイルを書き出すことはできなすか?
0383nobodyさん04/05/14 20:12ID:???
>>381
出力せずに一旦変数へ取り込んで、書きだしゃいいだろ。
038438104/05/15 01:31ID:???
いったん変数にとりこむって、どうすればいいのでしょうか?
$smarty->displayだと、出力しちゃいますよね。。。
0385nobodyさん04/05/15 01:50ID:???
いくらなんでもマニュアル読まなさ杉
せっかく日本語であるのに
038638104/05/15 02:01ID:???
をを、みのがしていた、
// 出力を取り込む
$output = $smarty->fetch("index.tpl");
ですね。ありがとうございました。
0387nobodyさん04/06/06 14:52ID:???
smartyは配列の使い方が面倒だなぁ。
連想配列はまだいいんだけど。
0388nobodyさん04/06/10 14:49ID:???
ttp://www.phpinsider.com/php/code/SmartyFormtool/
のformtool_move, formtool_moveallを使いたいんだけど、

The "save_from" and "save_to" parameters are the names of a hidden fields in the form that the new orders are saved into, comma separated.

この文の意味が理解できない。orz
FORMを作るときに"save_from" と "save_to"という名前を持つ hidden フィールドを
作れということ?NAMEはいいとしてVALUEには何を入れるのだろうか?


0389nobodyさん04/06/10 19:33ID:???
試さずにカキコ。

>>388 例題をそのまま入力して{debug}したら何か分かったりしませんか?
0390nobodyさん04/06/10 20:03ID:???
>>389
例題をそのまま試すと、テーブルは表示されるのですが、中のボタンが表示
されるところで、

Warning: Smarty error: formtool_moveup: missing 'save_from' parameter
in C:\Apache\Smarty\Smarty.class.php on line 1102

というWarningがでます。
0391nobodyさん04/06/11 15:12ID:???
ちょっとだけ試してカキコ

{formtool_moveall from="colors5[]" to="colors6[]" save_from="dd" save_to="ff" button_text=">>"}
のように{formtool_moveall ・・・} と{formtool_move ・・・} の中に、
save_from="dd" save_to="ff"
を入れておくと取りあえずmove は出来るようだ。

dd, ff はjavascript で
<input type=button value="<<" onClick="formtool_moveall(this.form.elements['colors6[]'],this.form.elements['colors5[]'],this.form.elements['dd'],this.form.elements['ff'])">
のように展開されるので、適切なものに変更すれば良さそう。

javascript は詳しくないので、あとは調べて還元してくれると嬉しい。
0392388=39004/06/11 16:54ID:???
>>391
お手数おかけしましてすみません。

demo画面のソースをみると、ddやffはcolors5_saveやcolors6_saveなんかに
置き換えると良さそうです。
しかし、実行してみるとページエラーが発生してmoveができませんでした。
JavaScriptコンソールでみるとformtool_moveは定義されてないとエラーが
でています。

私もJavaScriptはよくわからないのですが、この機能は是非使いたいので
調べてみます。
0393nobodyさん04/06/11 17:24ID:???
.tpl ファイルに
{formtool_init src="/hoge/javascripts/formtool.js"}
は入れた? パスは適宜直してね。
0394388=39004/06/11 18:04ID:???
>>393
動きました!

javascriptへのパスが一文字間違ってました。
どうもありがとうございました。
0395nobodyさん04/06/28 15:15ID:???
PHP 質問スレッドの方から誘導されて来ました。
過去ログさらってみましたが見あたらないので質問をば。
--

Smarty を久々にバージョンアップした所、動作が変わって対処に悩んでまつ。

定義されていないテンプレート変数、例えば {$hoge} に assign が無ければ、
以前はスキップしてくれたのですが、バージョンアップ後は
>FATAL .. Undefined index hoge
とエラーを吐いています。
いちいち {if isset($hoge)} と囲うのも鬱陶しく、どう対処すべきかな〜、と。

# Smarty の設定かと思いマニュアル見直しましたが適当な設定は見あたらず。
# $smarty->undefined = NULL とかも試しましたが変化無しでした。
0396nobodyさん04/06/28 15:55ID:???
>395
違うかもしれんが、
{$hoge|default:""}
でいいんでないかい?
039739504/06/28 16:08ID:???
>>396
if で囲むよりそちらの修正子の方が分かりやすいですね。
取り敢えずそちらで逃げる事にします。
謝謝。
039839604/06/28 16:51ID:???
HelpのTips & Tricksにも書いてあるけど、
テンプレートの最初のほうとかに
{assign var="hoge" value=$hoge|default:""}
見たいに書いとくとすっきりするかもね。
単発で使うのなら{$hoge|default:""}でよさげ。
0399nobodyさん04/06/28 23:20ID:???
もうこうなっちゃうと
テンプレートというより新しい言語のようだ。
乗り換えることにする。
0400nobodyさん04/06/29 00:19ID:???
>>399
どんな優れたライブラリでも、使い方次第で単純にも煩雑にも書けるわけで。
smartyにいたってはテンプレートにロジックを書く事を許容しちゃってるので
mvc(もう少し適切な言葉がありそうだな・・・)を意識しないとsmartyを
使用する有り難味が薄れるだろうね。まぁ俺はとっくに乗り換えたんだけれど・・・。

>>395
$smarty->undefined はもう無くなったよ。未定義の場合は基本的にnullで決めうちになった。
ただ、テンプレート変数のtypoがあった場合に何も表示されないだとデバッグに困るから
$smarty->debugging = true; の時だけエラーが出るようになってる。
だからこれをfalseにしたらどう?一応2.6.3で確かめてみたところ大丈夫だったが。
040139504/06/29 02:54ID:???

>>400
情報感謝。
で、勘違い爆裂でしたので経過報告 _| ̄|◯

コンパイル後に生成されるコードはそれぞれ
修正子有り <?php echo $this->_tpl_vars['hoge']; ?>
修正子無し <?php echo ((is_array($_tmp=@$this->_tpl_vars['hoge'])) ? $this->_run_mod_handler('default', true, $_tmp, 'funi') : smarty_modifier_default($_tmp, 'funi')); ?>

で、旧バージョンの Smarty でも確認してみると生成されているコードは同じ、、という事は Smarty の問題ではない。
同じマシン上で PHP も php.ini も同じ物を使用していて両者の違いは、と言えば採用している他のライブラリ。
結局原因は Mojavi のエラー制御にある模様。
お手数かけますた、、

PHP 4.3.4 (Win)
Smarty 2.6.3

>>399,400
よろしければ遷都先のテンプレートなぞを、、
自分は次は Flexy 使ってみようかな、とか考えとります。
040240004/06/29 03:57ID:???
>>401
生成されるコードに違いはなくても、debugging = false した時に
fetchメソッドの内で error_reporting() & ~E_NOTICE されるようになってるんだけど。
mojaviはE_ALL前提で作られてるし、(ていうかコードの初っ端がerror_reporing(E_ALL);)
途中でエラーレベルも変更したりしないから、やっぱsmartyか原因かと思うんだけど・・・違う??
040339504/06/29 05:20ID:???
>>402
勉強になります。

Mojavi を使っていない方のアプリケーションの Smarty を 2.6.3 に入れ替えてみた所、問題は発生しませんでした。
って事でやはり Mojavi かな、と。。

> fetchメソッドの内で error_reporting() & ~E_NOTICE されるようになってるんだけど。

Mojavi によりエラーハンドラに errorLogger::standard() が設定されており、
件の <?php echo $this->_tpl_vars['hoge']; ?> で E_NOTICE レベルのエラーが発生し上記エラーハンドラが呼ばれています。
で、E_USER_* 以外の振り分けが考慮されておらず、errorLogger::fatal に回されて FATAL として解釈され、
FATAL ..(snip).. undefined index
のようなエラーメッセージが出力されている模様。

errorLogger::standard() の中で error_reporting の値をとってみると 2039 になっており E_ALL ^ E_NOTICE と等価でした。
php.ini と mojavi では error_reporting に E_ALL を指定しています。

眠くてまとまらないのですがこんな所で、、

# 問題が Smarty にあると思い込んで突っ走ってしまったのが敗因、、orz
# でも色々と助言をいただき良い勉強の機会になりました。多謝です&お手数かけました。
0404nobodyさん04/07/06 17:04ID:???
PHP二年やってきて今更PEARとSmarty使ってコーディングしてみたんだけど、これはすごいね。
俺のアドレナリンが吹き出る。

あとはPHP エディタで対応してくれれば文句なしー。
0405nobodyさん04/07/14 10:40ID:???
>>388のSmartyFormtoolですが、Javascriptがおかしいですね。

何かをセレクトして右から左へ移動…1
何もセレクトせず左から右へ移動…2

1のときと1+2のときでフォームから送られてくる値が違う
(2の操作で値全体が入れ替わってしまう)。
Javascriptがわかれば直すんだけど…

0406nobodyさん04/07/17 11:11ID:ckMFe6vn
Smartyのwordwrapは日本語にかけても大丈夫でしょうか?
エンコードはUTF-8を使ってます。
0407nobodyさん04/07/17 11:38ID:???
>>406
かけてみた?
040840604/07/17 12:16ID:???
>>407
いくつかの文章で試してみました。
EUC-JPの時は文字化けしてたけど、UTF-8なら一見すると大丈夫かと思ったら
よく見ると文字が一部消えたりしてました。やっぱダメそうですね。
0409nobodyさん04/07/22 17:59ID:gMMxLyKo
たまにはageてもいいじゃない
やまない雨はないじゃない
0410nobodyさん04/08/01 00:39ID:QU2e9+ue
一つ聞いてやるSmartyなんか使わなくてもMVCはできるだろぉう?
なんで、みんなSmaryマンセーなの?
0411nobodyさん04/08/01 04:46ID:???
態度が気に喰わない
0412nobodyさん04/08/01 08:44ID:QU2e9+ue
>411
えー、そんな事言わずに教えてよぉー。
0413nobodyさん04/08/01 13:32ID:???
女だったら教える。
0414nobodyさん04/08/01 17:08ID:???
要はさ、PHPって難しいのよ。
プログラミング言語としては簡単な部類に入るかも知れないけど、
HTMLくらいしか理解できないヤシにはとっつきにくい。
例えばforeach構文とか、デザイナーに理解できるか、と言えば
(人それぞれなのはもちろんだが)確実には理解できないと言っていい。

Perlの話になるが、代表的なTemplateとして、HTML::TemplateとTemplate::Toolkit
と言うのがある。Template::Toolkitは、様々な構文やら他のPerlモジュールを呼び出す機能やら、
その他もろもろの機能がついている。逆にHTML::Templateはif分のtrueとfalseの判定、
そしてループ機能くらいしかついていない。
どっちがいい?と聞かれれば、プログラマ的にはTemplate::Toolkitの方が楽。
でも、デザイナーには多分HTML::Templateのほうがわかりやすい。

PHP単体でMVCするのもいいんだけど、Smartyにしてある種の機能制限の方がわかりやすいって人もいるんだろう。
漏れはPHP単体のMVCだけどw
0415nobodyさん04/08/02 03:23ID:???
これだけロジック書ける・書かないと動かないテンプラで機能制限も糞もない。
ビューをデータが規定するタイプのものならともかくそれ以外ならどれも変わらね。
410には馬鹿馬鹿しくて答える気がおきね。
0416nobodyさん04/08/02 14:58ID:???
結局は流行かよ。
ちゅまんね〜。
0417nobodyさん04/08/02 14:59ID:???
おまえら全員ハルヒコだよ。
0418nobodyさん04/08/03 00:05ID:???
だまれナツチュウ
0419nobodyさん04/08/03 18:16ID:???
基地外を弄るな♪
0420nobodyさん04/08/04 16:49ID:T7C0bXmt
フォームから正の整数を入力して送信すると、1からその数までの整数の並びを表示するPHPスクリプトを作らなくてはならないのですが皆目検討がつきません…(つД`)
なにかアドバイスをお願いします。
0421nobodyさん04/08/04 16:56ID:???
>420
宿題は自力でやろうな坊や
てか、ここで聞くな馬鹿
0422nobodyさん04/08/04 23:15ID:???
ageるとロクな事がないな
0423nobodyさん04/08/05 21:11ID:???
range()
0424nobodyさん04/08/05 23:41ID:???
キャッシュをONにすると色々問題が起きます
0425nobodyさん04/08/06 11:13ID:???
phpのnumber_formatに相当する関数ってないですよね。
っと、書き込もうとして気づいた。register_functionで追加すればいいのか。
0426 ◆AngelH/kMI 04/08/08 22:37ID:???
>>425
number_formatならregister_function使わなくても呼べますよ
0427nobodyさん04/08/09 01:33ID:???
>>426
あら本当だ。フィルタ的に使えるのね。

つーか、引数1つで戻り値があるPHPの関数は以下の要領で使えるんですね。
{$number | number_format}
{$string | md5}
引数が複数の場合はどうするんだろう。出来ないのかな?(そんな機会はそうそうなさそうだが)
マニュアルに書いてありましたっけ?
探してみたんですけど、どこに載っているのか見つけられなかった。
0428 ◆AngelH/kMI 04/08/09 05:02ID:???
>>427
引数が複数ある場合は第2引数以降をコロン区切りで。

かなり極端な例だと
{long_multibyte_string|mb_strimwidth:0:40:"..>"}
こんな感じ。
まあでも、ここまでテンプレートに書くのはどうかとも思う・・・。
「見た目の変更」だからテンプレートに書いてもいい気がするけど

{long_multibyte_string[i].titile|escape|mb_strimwidth:0:40:".."|defaust:"データ無し"}
とかどうなのかと(苦笑
0429425=427@ ◆Kiss.FX29M 04/08/09 09:33ID:???
>>428
いろいろどーもです。
>>425のregister_functionに気づいた時点で書き込みをやめようと思ったんですが、
書き込んでよかった。勉強になりました。

//何気に古い酉を晒してみりゅw
0430nobodyさん04/08/09 18:15ID:???
うお!誰かと思ったら(笑
0431nobodyさん04/08/13 16:34ID:???
modifire?
0432nobodyさん04/09/01 16:13ID:DiPaFBrX
age
0433nobodyさん04/09/02 00:30ID:???
modifierでmb_truncateとかmb_wrapだの色々用意してはみたのだが、デザイナさんが使ってくれなくて寂しい
0434nobodyさん04/09/02 11:15ID:???
>>433
デザイナがHTML作って、
プログラマが組み込んでいるので使い放題!

・・・・(T-T)
0435nobodyさん04/09/11 11:24:55ID:vqhAT/1H
同じ例えば xxxx.php 内でユーザーがログインしてるかしてないかによって
表示を変えて使う場合、smartyのキャッシュ機能が問題起こす可能性はあるでしょうか?
誰かがログインした状態がキャッシュされてしまって
ログインしていない人にそのページが見えちゃうとか。
0436nobodyさん04/09/11 12:35:32ID:???
2.6.4入れたら、単純な四則演算(+とか/とか)でエラーが出るよぅ。
0437nobodyさん04/09/11 18:28:06ID:K5FwXM+0
>>435
キャッシュ、意外と使えなかった・・・。

テンプレートにアサインした結果をキャッシュするから、
テンプレートが同一なら問題起こる可能性あり。

>>436
どんな式?
0438nobodyさん04/09/12 01:33:02ID:???
Smartyのキャッシュ機能かぁ、使ったこと無いが需要あるのかな。
php使った動的ページで、しかもログインページなんて
ブラウザのキャッシュすら一応Metaタグとかで無効にしといた方が良い気がするが。

テンプレートエンジンのオーバーヘッドが気になるのなら
それこそ、動的な出力とインクルードしたテンプレートから生成された出力結果を
ファイルに書き出して静的htmlファイルを公開フォルダに置いた方が
良いだろうし。
0439nobodyさん04/09/12 02:45:25ID:JBS0QrEF
>>435
キャッシュIDをうまく使ってやれば平気。

>>438
テンプレートエンジンより、assignする値をDBなんかから持ってきてるときにオーバーヘッドがでる。
0440nobodyさん04/09/12 04:22:23ID:???
Smartyってあんまメリットなくない?
PHP自体で十分デザインとテンプレートの分離はできるし、
キャッシュ機能つくるのも特に大して手間じゃないし…

0441nobodyさん04/09/12 04:33:01ID:???
>>440
まずは自分のレスだけでいいから省みてみろ
0442nobodyさん04/09/12 05:08:05ID:???
>>441
まずは自分のレスだけでいいから省みてみろ
0443nobodyさん04/09/12 05:18:14ID:???
>デザインとテンプレートの分離

ワラッタw
0444nobodyさん04/09/12 06:21:43ID:???
>>439
??そりゃDBだろうがlogファイルからだろうが、演算結果だろうが
動的に出力する値は全部オーバーヘッドになるだろうさ。
Smartyのキャッシュ機能とはまるで関係ないのでは?
そこが気になるならWebアプリ自体使えないと思うが。
0445nobodyさん04/09/12 06:31:44ID:???
>>440
Smartyのメリットはプログラマよりデザイナに対してのものだと思う
0446nobodyさん04/09/12 06:37:44ID:???
いま、>>445がいいこといった。 メモしとけ。
0447nobodyさん04/09/12 06:45:25ID:???
>>444
いちいち値取りにいくのがオーバーヘッドになるから
その為のキャッシュ機能ですが?
0448nobodyさん04/09/12 08:27:29ID:7xfelydB
キャッシュをONにしたら、2,3割の確率で、しかもランダムな箇所で、
エラーを吐くようになったのですが・・・。

これってどうしようもないですか?

ひょっとして、テンプレートファイルのなかで
{php}
ほげほげ
{/php}
を数カ所使ってるのがいけないのでしょうか・・・
0449nobodyさん04/09/12 13:42:47ID:???
>>445
いや、デザイナの為ならなおさらSmarty使わないほうがいいだろw
DWとかはPHPタグで囲んだ部分は表示されないようになってるし
0450nobodyさん04/09/12 15:17:40ID:???
>>448
せめてエラーメッセージを書かないと。
0451nobodyさん04/09/12 15:31:00ID:???
>>448
すいません、同時にPHPを5.0.1にあげたんですが、4.3.8に戻して、
smartyのキャッシュを有効にしても、全然問題なかったです。

PHP5.0.1のせいだったみたいです。どうもすみません。
//しかしPHP5のSOAP使いたい・・・
045243604/09/13 00:26:30ID:???
>>437
遅レスすまんす。
普通に{$hoge+100}とかです。
本家のフォーラム見たら同じ問題が出ていて、CSV版では問題ないよ。って書いてあった。
めんどいから2.6.3に戻しましたけど。
0453nobodyさん04/09/13 02:45:25ID:???
>>449
オーサリングツール使ってhtmlファイルだけ渡して後は知らねぇってデザイナと、
デザイン上の修正の度にプログラマにも修正依頼しなきゃいけない様な
状況でしか仕事したことないなら、その環境は恥じた方がいいよ。
0454nobodyさん04/09/13 10:46:56ID:???
別にオーサリングツールで編集しやすいって言っただけでなんで…
勝手に勘違いして人の仕事環境妄想して、妄想で創った人物像相手に
レスする癖は恥じた方がいいよ?
例えばSmartyのforeach文が修正できてphpのそれが修正できないなんて奴いねぇだろw
対応エディタもマニュアルも多い分Smarty使うよりPHPタグで分けた方がデザイナ的にも
やりやすいってだけの話なんだけど?
0455nobodyさん04/09/13 11:07:47ID:???
PHP-users とはまた違った痛さがこのスレにはある!
0456nobodyさん04/09/13 11:46:10ID:u+cNXRva
>>449
Smarty用のDWプラグインがあるよ。
0457nobodyさん04/09/13 12:00:43ID:???
>>456
それXOOPSだと使えないよね
0458nobodyさん04/09/13 12:02:37ID:???
あぁごめんXML修正すりゃいけるか
0459nobodyさん04/09/13 13:27:37ID:???
なんかそのままだと日本語との兼ね合いで調子悪いな>DWプラグイン
変なとこでSmartyタグ扱いされちゃう。
0460nobodyさん04/09/13 14:17:29ID:???
>>459
SJISだと { } が悪さをする。ってかそれはSmarty全般じゃない?
0461nobodyさん04/09/13 17:27:51ID:E8MZljJ1
>>459-460
結構困るよな。パーサをマルチバイト対応させる必要があるよな。
0462nobodyさん04/09/13 17:45:08ID:???
>>461
泥臭くデリミタをオーバーライドしてるよ。俺。
0463 ◆AngelH/kMI 04/09/14 02:16:54ID:???
>>451
あー。まだ見てますかね。
謎エラーはSmartyが原因ではなくてPHP本体が原因。

--enable-zend-multibyteつけてmakeしてませんか?
4.3.8以降/5.0.0β3以降あたりから出る模様です。
046445104/09/14 10:32:41ID:???
>>463
>--enable-zend-multibyteつけてmakeしてませんか?
ビンゴです。

つけないで、5.0.1入れてみます!
ありがとうございます。
046545104/09/14 13:59:25ID:???
>>464
無事PHP5.0.1入れられました。エラーもおこりません。
ありがとうございます。

さぁ、SOAPであそぼう。。。
0466nobodyさん04/09/15 16:10:31ID:sZX1kIS0
smartyで携帯サイト作れるのかな?
0467nobodyさん04/09/15 17:19:27ID:???
>>466
作れます。
0468nobodyさん04/09/15 18:59:41ID:???
SJISでややこしいことになりそうだが・・・
0469nobodyさん04/09/15 19:07:40ID:???
>>468
大丈夫ですよー。
内部エンコードこそ EUC とかで書きつつ
mbstring.http_output の値を SJIS にしちゃえば OK です (´ω`)

0470nobodyさん04/09/15 20:41:54ID:dqyUiMN9
>>469
それやんないと能とか条が化けるんだよな。
0471nobodyさん04/09/15 22:01:32ID:???
>468
普通にSJISで問題ないよ
>469
EUCにしちゃうと絵文字のバイナリでの入力ができなくなるから使いづらい。
>470
どんな使い方してるんだ?
0472nobodyさん04/09/15 22:21:33ID:C49Dq6Pt
>>471
>>470ではないけどテンプレート中の文字が化けるっしょ?
--enable-zend-multibyteを付けてビルドして、mbstring.script_encoding=SJISを設定してれば
SJISをちゃんと扱えるようになるけど、パフォーマンスが落ちるし。

絵文字は確かに扱いづらくなりますな。
キャリア間の非互換やPCでの表示もあるから、絵文字はプレースホルダを
端末に応じて置換してテンプレートに渡してるんだろうけど、
assignの段階では置換せずにoubput_handlerに
SJISへの変換と絵文字プレースホルダの置換をする関数を指定すればいいんじゃないかな。

まさかユーザーから入力された絵文字を生のままログに保存してたりしないよね?
0473nobodyさん04/09/15 22:50:59ID:???
PHPの書籍で入門以外のってないのかな。
どれも入門ばっか・・・
0474nobodyさん04/09/15 23:02:47ID:???
>>472
471ですが、鯖の設定は他人任せだからよーわからんです。
夜間だと秒間8〜12アクセスある携帯サイト運営してて
体感的に遅くなったことはないです。
携帯相手だから速度は気にする必要ないのかもしれんが。

絵文字とhdmlはoutputfilterで自動変換させてる。
PCは絵文字画像ね。

ユーザーの絵文字はiモードの絵文字(バイナリ)にしてから
mysqlに入れてるけど何か問題ありますか?
ちょっと前まではbase64_encodeしてから入れてましたが
面倒なのと問題がないのとでそのまま入れてます。
単純にわからないので教えてください。
教えて君でスマン。
0475nobodyさん04/09/16 03:23:52ID:???
>>474
なるほど。納得。
iモードのやつに統一してあるならOKっす。
>>472の意図はDoCoMo/au/Vodafoneで別々の絵文字を
そのまま扱ってたらアレだなあと思ったので。

満足なパフォーマンスが出てるなら気にすることもないです。
それ以前にmbstring.scriptl_encodingは未設定で、
たまたまうまく動いている可能性が高いですが。
0476nobodyさん04/09/16 05:22:54ID:???
なんかすげーためになった。ありがと。
今のとこ携帯サイトの仕事は無いんだが・・・
0477nobodyさん04/09/17 00:34:45ID:???
>>475
ケイタイサイトは泣けるぞ。
端末ごとに動作違ったりするから、真面目にやろうとすると大量のケイタイとにらめっこだ
0478nobodyさん04/09/18 17:46:27ID:???
>>475
なんかセキュリティーホールがあるのかと思ってすごいビビってましたよ。
絵文字は各機種ごとにそのまま保存してても
問題ないと思いますね。ようはユーザーに対しそれをどう扱うかだし。
うちはiモード重視だからi基準にしちゃってますが。
mbstring.script_encodingは未設定ぽかった。
試しにaaacafeとc-sideで試したらOKでした。

>>477
かなり泣けるよね。
特にEZ端末で同じ会社の端末でも挙動が違ったり
locationが使えなかったりとかもろもろと・・・。
0479nobodyさん04/09/18 18:47:21ID:???
ttp://www.geocities.co.jp/HeartLand-Yurinoki/1836/c_aa_archive/jikken/Denmark_and_Tomasson.html

泣ける
0480nobodyさん04/09/18 20:43:00ID:???
>>479
畜生、モニタが滲んでよく見えねえよ・・・
0481nobodyさん04/09/19 19:04:37ID:???
こわくてみれません。
0482nobodyさん04/09/19 19:10:05ID:???
感動話だよ。
0483nobodyさん04/09/19 20:18:01ID:???
泣けます。
0484nobodyさん04/09/19 21:45:49ID:???
なぜこのスレに張るのかがイマイチ分からないけど泣ける。
0485nobodyさん04/09/22 01:32:35ID:???
意図がわからんが、泣ける。
0486nobodyさん04/09/22 02:08:38ID:???
#セ\NAugmc
0487nobodyさん04/09/22 20:46:22ID:S3VBXifE
php.iniは
output_buffering = On
output_handler = mb_output_handler
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
で
$buffer_euc = $smarty->fetch('index_m.tpl',$smarty_cache_id);
$buffer_sjis = mb_convert_encoding($buffer_euc,"SJIS");
//---------------------------------------------------------------------------
header( 'Content-Type: application/xhtml+xml; charset=Shift_JIS' );
header( 'Content-Length: ' . strlen( $buffer_sjis ) );
//--------------------------------------------------------------------------
$smarty->display('index_m.tpl',$smarty_cache_id);
としてるのに、出力がEUCになってしまいます。

どんな原因が考えられるのでしょうか?
0488nobodyさん04/09/22 22:03:51ID:???
泣いた
0489nobodyさん04/09/22 22:05:55ID:???
・phpのバージョンくらいは書く
・$buffer_euc, $buffer_sjis等の出力の文字コードをチェックするなりして、問題を絞り込む
・キャッシュが更新されずに古いものが使用されてないか?
0490nobodyさん04/09/22 23:09:16ID:???
>>489
>>488が泣いたのはそんな理由じゃないと思うよ。
まずoutput_buffrering不要。
一応mb_convert_encodingの第三引数に"EUC-JP"を入れといた方が無難。
極め付けに痛いのが $smarty->display('index_m.tpl',$smarty_cache_id);
echo $buffer_sjis; でええんちゃうかと。
049148704/09/23 11:59:14ID:???
>>488-490さん、ありがとうございます。

すいません、情報不足で。PHP5.0.1です。
キャッシュは、全部けしてもおなじ状況でした。

で、まさかと思って調べてなかったのですが、
$buffer_euc = $smarty->fetch('index_m.tpl',$smarty_cache_id);
のちの$buffer_eucは空でした。
なので文字コードは、$buffer_euc、$buffer_sjisともに空で、
ただし、
$smarty->display('index_m.tpl',$smarty_cache_id);
はなぜか(EUCで)表示できてます・・・。

>>490
echo $buffer_sjis; でええんちゃうかと。
いや、どうしても重くならざるをえないページなので、
キャッシュをつかいたかったもので。

やはりPHP5.0.1というのが相性悪いのでしょうか?
ただ、スクリプトの他の部分では、$smarty->display成功してるんですよね。(ちゃんとSJIS)

変数やファイル名が違うだけで、そこといっしょのことをしてるはずなんですが・・・
0492nobodyさん04/09/23 12:05:14ID:???
>>491
意図したコードと違うことが書いてある気がする。もういちどよく見直せ。
適切なタイミングでnew Smarty()してないとかw

んで、>490ではないが、featchの内容とdisplayの内容が同一で、
SJISに変換したものが$buffer_sjisに入ってるなら、それを出力してやったほうが処理は早いぞ。
0493nobodyさん04/09/23 12:41:42ID:???
488だが>>479について泣いたつもりだったんだよな
049448704/09/26 01:42:15ID:ORPXRj+I
>>487です。
とりあえず文字化けは「解決」しました。というか、あきらめました。
application/xhtml+xml;をあきらめて、"Content-type: text/html";にしたら、
文字化けしないようになりました・・・

ただ、別の問題が生じてます。
>>487のソースで、
HTTPヘッダが「Content-Length: -」となってしまいます。
どうにかして、smartyを使いつつ、「Content-Length」を正常に表示させる方法とかないでしょうか?

ob_関係の関数使おうかと思ったのですが(ob_get_lengthとか)
「smarty->display」でブラウザに表示されるときはSJISですが、
その直前まではEUCなので、文字数がずれてしまいます・・・
どなたか裏技っぽい方法でもいいので、お助けいただければ幸いです。
0495あぼーんNGNG
あぼーん
0496nobodyさん04/09/26 19:15:27ID:???
結局>>495のアドレスは何だったんだろう?
0497 ◆AngelH/kMI 04/09/28 02:48:49ID:???
>494
$smarty->fetch()で表示内容取得して
文字コード変換かけてstrlenで測るとか?

・・・かなりダメそうな方法だ(苦笑
049848704/09/28 11:55:20ID:???
>>404
いや、それ、>>487でやってます。(content typeは違うけど)

そしたら、「Content-Length: -」となってしまうので。。
0499nobodyさん04/09/28 15:25:48ID:???
>>494
アウトプットフィルタプラグインとかどうよ
050048704/09/29 12:13:50ID:???
>>494

ん・・・・・あんまり概念が理解できてないから、自作はきびしいかも。。。
050148704/09/29 12:14:03ID:???
もとい、>>499さん。
0502nobodyさん04/10/11 16:58:02ID:RLUAfbkL
HDMLの携帯サイトを作るのにsmartyは使えませんよね。
0503nobodyさん04/10/11 18:13:33ID:???
>>502
どうせフレームワーク組んじゃうんだろ?
んじゃpattemplateのほうがシンプルで扱いやすいだろ。
smartyはあくまで、いろいろ自分で組めない厨向けのテンプレだぞ。
0504nobodyさん04/10/12 12:14:58ID:???
>>502
使えますってか使いました。
0505nobodyさん04/10/12 14:58:47ID:???
>>503
まず出来上がりの早さを求めるのであって
自分で出来るか出来ないかの問題ではない

そこから、どう不都合になるか考える。
出来てから考える。

誰でも自分で作れるよ。でも1年かかります。そんなの待てるか。
といわれちゃうよ
0506nobodyさん04/10/12 16:27:47ID:bb34UBPS
>>503
まあ、それをいうならPHPはあくまで、いろいろ自分で勉強できない厨向けの環境だからな。
0507nobodyさん04/10/12 16:42:18ID:???
ということにしたいのですね:-P
0508nobodyさん04/10/12 17:24:13ID:bb34UBPS
そういや、PECLってどうなったん?
あと、なんかCPANみたいなのやるっていう話なかった?
0509nobodyさん04/10/12 19:39:43ID:???
誤爆してるぞ
0510nobodyさん04/10/16 23:33:47ID:OMhy7HMx
便利そうなのでSmarty使ってみようと思ったけど
インストールすら出来ない(´・ω・`)
初めのHello!,Ned1が出ないし

きちんとinclude_pathを設定して...Example 2-9でエラー
unexpected T_STRING in c:\〜 in 20

はて、config_dirのパスが設定出来ないらしい
Windowsの絶対パスはc\:からだよね?
0511nobodyさん04/10/17 05:34:27ID:???
 ・ ”C:\〜” ではなく ”C:/〜” を使ってみる
 ・ 相対パスを使ってみる
051251104/10/17 05:35:51ID:???
なんか腹が立つな
>(´・ω・`)
0513nobodyさん04/10/17 07:09:37ID:???
こころが狭いか、2chに不慣れなやつだな。
0514nobodyさん04/10/17 17:17:49ID:???
自分のせいじゃなくシステムのせいにする人格の象徴⇒(´・ω・`)
もしくは某板の糞コテ
0515nobodyさん04/10/17 18:11:08ID:???
なんか、nobodyさんはすべて同じ人物だと思ってるのと同じ程度の痛さだね。
0516nobodyさん04/10/17 18:18:34ID:???
字句解析までしか出来ない駄目AIの僻み
0517nobodyさん04/10/17 21:08:07ID:2DZWHiAE
511さんのオカゲで出ました。ありがとう
やはりC:/〜でした。
0518nobodyさん04/10/27 11:44:54ID:5LD6Mw3o
アプロードしたtemplates_cの中のファイルが削除できない。
templates_cそのものも削除できない。
なぜかな?
0519nobodyさん04/10/27 12:38:36ID:???
templates_cの中のファイル群はWebサーバの動作権限(ユーザー)で作成されるから。
0520nobodyさん04/11/09 09:28:23ID:RHwN8VlW
smarty使ったblogの開発で人募集してるので
オープンソースに興味がある人とか参加してみたら?
--------------------------
【2ちゃんブログ】次世代開発中心 Part2@ブログ
http://pc5.2ch.net/test/read.cgi/blog/1092616279/l50

391 名前:忍ロボ ◆O6dempau.2 本日のレス 投稿日:04/11/09 01:48:13 GsdPVZqn
ちゃぶだい
開発に参加してくれる人募集します〜

・開発者さん(PHPで開発できるひと)
・デザイナーさん(デザインテンプレート作成)

こちらのメールフォームから連絡よろしくですー
↓
http://chbox.com/mail/
■ハンドルネーム
■連絡先メールアドレス(フリーメール不可)
■ホームページ/weblog URL
■(開発者? / デザイナー? / その他)
■連絡事項(あれば)
0521matsumoto04/11/10 22:33:26ID:6T9+fSCp
smartyでテンプレートには設定しているけれど、assignし忘れた場合、
Arrayと出力されてしまうけれど、これを 表示しないようにする簡単な方法はないのでしょうか。
0522nobodyさん04/11/11 00:19:20ID:???
>>521
それは、
テンプレートで参照してるけど、
assignしていない場合に、Arrayと出力されていて、
その現象を回避したいってこと?
0523nobodyさん04/11/11 01:14:01ID:???
別にArrayなんて出ないけどな。違うものassignしてるんじゃないの?
0524matsumoto04/11/11 02:52:04ID:IGJG68qY
■テンプレート
{$aaa} -- {$bbb}

■PHPプログラム
$smarty->assign("bbb" , "BBB");
// $aaaについてはassignしない

■出力
Array -- BBB

となってしまいます。わたしだけでしょうか?
他の方はなりませんか?
0525matsumoto04/11/11 02:55:24ID:IGJG68qY
追記:
524の場合で、こうなってほしい。
PHPプログラムは同じ。
■テンプレート
{$aaa}--{$bbb}
{if $aaa}{$bbb}{/if}

■出力
--{$bbb}

こうなってほしいのですけれど。
つまり、単独では空文字になって、ifで使用した場合にはFALSEの扱いになるような...
0526matsumoto04/11/11 02:56:49ID:IGJG68qY
すみません。出力間違いです。
■出力
--BBB

です。
0527nobodyさん04/11/11 11:07:43ID:???
$smarty->debugging=TRUE;
にしてみ。
絶対、他の値が入ってる。
0528nobodyさん04/11/12 18:43:42ID:???
間違いなく入ってるね。

>>524
PHPのなかみ 出し惜しみするなよ。
0529nobodyさん04/12/08 01:12:49ID:???
これって元になったテンプレートエンジンとかあるんでしょうか?
源流ってどのへんになるんだろ?
0530aya04/12/09 17:20:27ID:hK+hWFtH
windows2000(IIS)でのsmartyの設定でつまづいてしまっています。

まずダウンロードしたSmarty-2.6.6.tar.gzを解凍し、その中のlibsの中身
を、
c:\php\smarty というフォルダを作ってコピーし、
C:\WINNT\のphp.iniのinclude_pathを下記のように変更しました。

// 変更前(既に入れたpearのパス)
include_path=".;C:\php\pear;c:/php/includes;c:/php/pear"
// 変更後(smartyへのPATH)
include_path=".;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty
"

これで、smarty/demo/index.php(SMARTYのテストプログラム)にアクセスすると
、
---------------------------------------------------------------
Warning: main(Smarty.class.php): failed to open stream: No such file or directory in c:\inetpub\wwwroot\nyuukin\demo\index.php on line 4

Fatal error: main(): Failed opening required 'Smarty.class.php' (include_path='.;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty') in c:\inetpub\wwwroot\nyuukin\demo\index.php on line 4

---------------------------------------------------------------
のエラーが出てしまいます。 smartyへのpathを通すのにはどうすればいいんでしょう?
不躾ですみません。


0531nobodyさん04/12/10 04:49:38ID:gB4mZSIs
PathはSmarty.class.phpがある場所にしなさい
と出てますが・・・ちゃんとある?
0532nobodyさん04/12/10 10:44:56ID:???
Smarty.class.php は libs の中にある。
0533aya04/12/10 10:58:34ID:f65efB7J
>>524
そうなんですよね。ちゃんと設定したはずなんですが、pathが
通っていないんです。
既に稼動しているPEARのライブラリのパスは
include_path='.;C:\php\pear;c:/php/includes;c:/php/pear'で
pear配下のファイルがincludeできるのですが、
(include_path='.;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty'
として、
c:/php/smarty/Smarty.class.php
にアクセスするとエラーになってしまうんです。

include_pathは、ウィンドウズのシステム環境変数のPATH設定と
同じ感覚でセットアップしているのですが・・
どうしてなんだろう?





053453204/12/10 11:14:16ID:???
>>533
せっかく返事したんだから読めよ。

require_once('libs/Smarty.class.php');
でいけるんじゃねーか。
いけなかったら、libsにパス通せ。
0535aya04/12/10 12:22:05ID:f65efB7J
>>533
ごめんなさい。間違えました。533スレッドは、
>>533さんへのレスポンスでした。しっかり読みました。

要は、解凍したlibの中身を、smarty直下に移動したわけだから、
c:/php/smarty'
とinclude_pathを追加したんです。

053653204/12/10 20:07:24ID:???
\ と / が混在してるのが気になる。

ひとまず\で統一してみれば?
0537aya04/12/11 13:42:57ID:Jq/LlFpl
>>536
そうなんです。
ディレクトリセパレータを(/),もしくは(\)に統一して実行してみたの
ですが、PEARは正常に稼動し、SMARTYは相変わらずPATHが通っていない
状況が続いています。
0538nobodyさん04/12/11 21:58:48ID:???
Pathは通ってるけどSmartyが未設定なんじゃないの。
だいたいPath通す必要性ないよ。
0539nobodyさん04/12/12 17:33:42ID:???
>>537
Smarty-2.6.6\demo\index.php
> require '../libs/Smarty.class.php';
なわけだが。
0540nobodyさん04/12/13 17:56:41ID:???
>>539
どうやら>>537はlibsの中身だけを
c:\php\smarty\ に置いてるらしいぞ。
今まで読んだ感じだと。
0541nobodyさん04/12/13 22:35:43ID:???
ayaって釣り馬鹿の共有コテじゃないか
0542nobodyさん04/12/16 17:12:21ID:RdrCSV2b
連想配列の添え字の指定を変数で行いたい時ってどんな書き方すれば良いんですかね?
{$DATA.$key}
こんな指定の仕方がしたいんですが…
0543nobodyさん04/12/16 22:21:21ID:???
>>542
mk:@MSITStore:c:\php\HtmlHelp\php_manual_ja.chm::/ja/language.types.array.html
0544nobodyさん04/12/16 23:45:45ID:???
>>543 ???
Smartyでの指定の仕方なのですが
0545nobodyさん04/12/17 01:16:41ID:???
>>544
demo\index.php、demo\templates\index.tpl嫁よ。
0546nobodyさん04/12/17 01:52:06ID:???
>>545 ???
どこにも連想配列のKeyを変数で指定している記述は見当たらないんですが
0547nobodyさん04/12/17 11:34:54ID:???
てか、
{$DATA.$key}
これでできるでしょ…。試してないの?
{$DATA[$key]}
でもできるみたいだけど。
0548nobodyさん04/12/19 11:34:13ID:???
Smartyって配列の扱いが面倒な気がするのですが
こんなもんなんでしょうか?
そのうちなれるのかな。
ほかのテンプレートはどうなんすか?
0549nobodyさん04/12/19 11:37:18ID:???
>>548
最近気づいたんだけど
section
でなく
foreach
を使うと配列ラクだよ
0550nobodyさん04/12/19 15:48:21ID:???
テンプレートの記述とは書いてないけどね
0551nobodyさん04/12/19 15:58:49ID:???
>>550
言うたら何が面倒なのかも書いてないやろ。
0552nobodyさん04/12/19 16:36:21ID:???
>>550
なにが面倒なの?
0553nobodyさん04/12/19 21:03:08ID:???
誰がホセなの?
0554nobodyさん04/12/19 21:12:51ID:???
だれがつまらんこと言ってるの?
0555nobodyさん04/12/19 21:40:23ID:???
>>554
まずお前が鼻に付く
0556nobodyさん04/12/19 23:38:58ID:???
そしてお前があごに付く
0557nobodyさん04/12/20 20:15:55ID:???
>>556
何?同じようなこと繰り返せば面白いとでも思ってんのかバーカ
0558nobodyさん04/12/21 04:09:14ID:???
>>557
なんか嫌なことあったの?
0559nobodyさん04/12/21 12:33:51ID:???
SmartyとPear::Auth と HTML_QuickFormを併用してMVC設計してる人いないかな?
0560nobodyさん04/12/21 13:46:25ID:t6MkBwt3
寒稽古してる人いる?
056155904/12/21 13:49:27ID:???
HTML_QuickFormを使うとMとVの分離が怪しくなる。
しかもSmartyとの連携も怪しくなってきたりして。
0562nobodyさん04/12/21 17:58:00ID:???
>>561
同感。
0563nobodyさん04/12/23 06:26:50ID:???
HTML_QuickFormじゃなくてSmartyValidatorのほうはどうですか?誰か使ってる人います?
0564nobodyさん04/12/27 15:43:31ID:???
SmartyValidatorってはじめて聞いたので、ググってみた。
・・・情報が少なすぎる。
0565nobodyさん05/01/03 00:08:40ID:???
最近PHP始めたのですが、ソースが肥大化してしまいSmarty化しているのですが、
while($row = mysql_fetch_array($left)) {
print("[".$row["month"]."/".$row["day"].]");
}
こんな感じのをSmarty化できずに困っています。
{foreach}{/foreach}などを使ってやるようなことは解ったのですが、
key とか name などの使い方が解りません。どなたか教えてください。
0566nobodyさん05/01/03 00:32:46ID:wnsIsqHm
>>565
そんな単純なコードをいじったところで変わりぁせん
0567nobodyさん05/01/03 20:57:14ID:???
>>565

こんな感じか。

PHPのコード
$rows = array();
while ($row = mysql_fetch_array($left)) {
$rows[] = $row;
}
$smarty->assign('rows', $rows);

テンプレート
{foreach from=$rows item=row}
[{$row.month}/{$row.day}]
{/foreach}

Smartyマニュアルの「第4章 変数」の「phpから割り当てられた変数」のあたりを
読むといいよ。
0568nobody& ◆vGPd8m6uvw 05/01/03 21:01:00ID:???
>>567さん
感謝です。
>Smartyマニュアルの「第4章 変数」の「phpから割り当てられた変数」のあたりを
>読むといいよ。

是非読ましていただきます。
0569nobodyさん05/01/04 23:38:34ID:???
Smarty側でforloopを
使うことは罪に当たります。
057056905/01/04 23:39:24ID:???
2005年における初めてのネット上での書き込みが
こんなくだらないものだった。
もう少し考えてから書けば良かったのに俺。
0571nobodyさん05/01/06 13:52:57ID:???
ところで、{foreach}間でeregを使って正規表現を使うには、どうすればいいですか?
0572nobodyさん05/01/06 18:12:11ID:DWsuB/B6
html_optionsではき出してる各要素に、
onclickをつけてjavascriptを呼び出したいんですが、
何か良い方法ないですかね
0573nobodyさん05/01/06 18:23:57ID:???
smartyってHTMLには便利なんだけど
メールのテンプレートに使おうとするとたいへん。
IF文をうまく書かないと
改行がへんなとこで入ったり、改行しなかったりして
結果、テンプレートが見にくくなる。
うまい方法ないかなー?

>>572
適当に html_options2 とか作って
パラメータを増やす
0574nobody& ◆k0eA9hHNm2 05/01/07 00:04:35ID:???
mysqlから取り出したデータを表示させるチャットスクリプトなんですが、
自動リンクさせるためにregex_replaceを追加したのですが、エラーが起きてしまいます。
ソース:{$row.comment|regex_replace:"(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
どうすればいいですか?
0575nobodyさん05/01/07 00:09:56ID:???
>>574
エラーメッセージを読め
0576nobody& ◆QWv3R1XL8M 05/01/07 00:17:18ID:???
>>574 追記
Warning: Unknown modifier '(' in ちょめちょめ on line 24
と出てします
0577nobodyさん05/01/07 00:38:20ID:???
>>576
あんた誰?
0578nobodyさん05/01/07 01:34:57ID:???
>>577
初心者です。
0579nobodyさん05/01/07 01:36:36ID:???
もしかして>>574=>>576か?
だったら書き込み毎に変えるようなトリップ使わずに
元質問のレス番を名乗れ
058057405/01/07 01:41:48ID:???
>>579さんの指摘はごもっともです。以下気をつけます。
0581nobodyさん05/01/07 01:49:23ID:???
Warning: Unknown modifier '(' in と出てもおそらく '(' が原因ではない。
'/' 3つをエスケープしてないじゃないか。
0582574=58005/01/07 02:07:47ID:???
>>581さん指摘ありがとうございます。
ソース:{$row.comment|regex_replace:"(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,! #~*/:@&=_-]+)":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
を
{$row.comment|regex_replace:"'(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,! #~*/:@&=_-]+)'":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
に変えると正しく作動するようになりました。
0583nobodyさん05/01/07 02:12:01ID:???
ところでこういう問題は起きていないか?
http://www.ironhearts.com/diary/archives/000365.html
0584574=580=58205/01/07 02:14:27ID:???
>>583さん
まさにそれです。そのとうりです。
0585nobodyさん05/01/07 10:29:27ID:???
>582
そんなのテンプレートに書くの?
modifierプラグイン書いたほうがいいよ
0586nobodyさん05/01/07 11:46:56ID:???
>>585
俺もそう思う。
modifier.alink.php みたいな。
なんか落ちてそうだけどな。
0587nobodyさん05/01/14 00:43:42ID:???
質問なんですが、インストールする場合は/usr/local/・・・っていう場所じゃなくてもOKです?
たとえばレンタルサーバにSmarty置いて動作させたりは可能なんでしょうか・・。
0588nobodyさん05/01/14 02:08:19ID:???
>>587
まず試せ。
0589nobodyさん05/01/14 02:18:55ID:???
>>588
その回答だと使えるんですね、サンクス
0590nobodyさん05/01/14 09:42:08ID:???
ムッキー
0591nobodyさん05/01/14 20:49:49ID:???
かわいい
0592nobodyさん05/01/18 16:40:18ID:GbvmkgfT
誘導尋問のプロフェッショナル発見

・・・と書き込んでおこう
0593nobodyさん05/01/18 20:43:29ID:???
その程度の回答で満足できるなら
なぜ最初に試さないんだろう・・・
0594nobodyさん05/01/20 08:23:23ID:???
試すより聞くほうが楽だからだろ
0595nobodyさん05/01/20 10:25:20ID:???
試す 同期型処理
聞く 非同期型処理
0596nobodyさん05/01/20 14:29:42ID:???
試す 自分で行動
聞く 人に頼む
0597nobodyさん05/01/20 15:58:23ID:???
試す すでに環境が用意できている
聞く まだ環境が用意できていない
0598nobodyさん05/01/21 00:30:18ID:Q7KPWxeo
・1
 ・2
 ・3
  ・4
   ・5
  ・6
 ・7
  ・8

ttp://www.skullysoft.com/soft/ssc-board/bbs/main/c-board.cgi?id=cboard
このようなツリー型の掲示板に代表されるような木をSmartyで表示したいと思っています。
foreachやsectionでは決まった深さであれば入れ子にして表示することができるのですが

例えば2階層なら

{foreach .....}
・根
 {foreach .....}
 ・葉
 {/foreach}
{/foreach}

のようにして表示できるのですが、実行時に深さが決まる場合はどのようにすればよろしいのでしょうか?
ご存知の方がいらっしゃいましたらよろしくお願い致します。
0599nobodyさん05/01/21 00:43:39ID:???
>>598
{foreach .....}
・根
 {foreach .....}
 ・葉
  {foreach .....}
  ・葉
   ....
  {/foreach}
 {/foreach}
{/foreach}
0600nobodyさん05/01/21 01:06:26ID:???
>>242の方法はどう?
0601nobodyさん05/01/21 01:46:56ID:???
>>598
最近この手のツリー式BBS作ったけどツリー作る所まではロジック側でやったよ。
表示順とインデントまで作ってSmartyの方では単純なループで表示させるだけって感じで。
0602nobodyさん05/01/21 03:01:42ID:???
>>600
ありがとうございます
この方法で試してみたところ上手くいきました
(key val)が1つの葉で多分木の状態になっています

- base.html

<ul>
{include file="incl.html" root=$root}
</ul>

- incl.html

{if isset($root.key)}
<ul>
 {foreach from=$root item=node}
  {include file="incl.html" root=$node}
 {/foreach}
</ul>
{else}
 <li>{$root.key} - {$root.val}</li>
{/if}

>>601
確かにそちらの方がよさそうですね
恥ずかしながら上のを作っているときに無限ループにはまってしまって
デザイナーがやる仕事ではないと思いましたorz
issetを持ち出している所も、ほとんどPHPのプログラムになっていますし

ただ、予め作ってしまうと上で上げた単純な<ul>を使った方法や
ttp://www.skullysoft.com/soft/ssc-board/bbs/main/c-board.cgi?id=cboard
のようにしたいという場合にテンプレート側のみで出来なくなってしまうので非常に悩んでいます
0603nobodyさん05/01/21 17:13:04ID:???
Smartyはdisplay関数で出力しますが、ブラウザに出力するのではなくファイルに出力したりできるんでしょうか?
ざっとマニュアル見てみたのですがそのような関数は無いみたいでした。
自分でソースを編集しないとダメなのかな・・(´・ω・`)
0604nobodyさん05/01/21 17:20:08ID:???
fetch()
0605nobodyさん05/01/21 17:20:23ID:???
>>603
ob_start();
$smarty->display();
$result = ob_get_contents();
ob_end_clean();

// あとはお好きなように
060660505/01/21 17:21:25ID:???
>>604
そんなのあったのね。サンクス。
0607nobodyさん05/01/21 17:28:58ID:???
>>604-605さん
ありがとうございます
早速試してみます
0608nobodyさん05/01/21 19:47:12ID:???
>>602
データにインデント数(何番目の階層か)まで持たせれば、
<ul>だの<li>だののループでどうにかなるんじゃないの?
0609nobodyさん05/01/21 20:32:27ID:???
>>608
ならない
やってみれば分かる
0610nobodyさん05/01/21 22:03:06ID:???
>>609
サンプルをくれ
061159805/01/21 23:54:03ID:???
>>608
私もそれを考えてみたのですが、どう実装すれば良いか分からず


そこでblockプラグインを作成しようと思ったのですが、blockの内部の変数は
既に変換済みで渡されるということなので、どうすればforeachみたいな事を
できるのかマニュアルと格闘していたのですが解決できそうな方法がありませんでした。

やはりテンプレート上のみで解決するには上で解決したような例でinclude再帰か
foreachの実装みたいなものをSmarty側で新たに組み込むかなど
上手い方法がなかなか思いつきませんorz
061259805/01/21 23:57:53ID:???
もう一つ思いついたのが、blockプラグインで変換済みで渡されるなら
Smartyの構文で渡すのではなく、特殊な文法でいくという感じでした

{html_tree ......}
this is [[node]]
{/html_tree}

これならpreg_replaceしながらでいけるのですが、新しい文法を作り出さないで
上手くいく方法がないか模索しています
0613nobodyさん05/01/25 17:14:22ID:ShBI8nKK
Smartyで、{$link->setAction('MemberList')->addLinkParam('id', 24)}のように、
setActionオブジェクトのメソッドにアクセスしようとしたところ、syntax error: unrecognizedが発生してしまいました。
参照オブジェクトからのメソッドはコールできないんでしょうか?
0614nobodyさん05/01/26 19:05:19ID:???
>>613
呼び出せます。
以下を読んでみて。

http://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/advanced.features.html#advanced.features.objects
061561405/01/26 19:06:32ID:???
あ、よく読んでなかった。
テンプレートの中でメソッドコールのチェーンはできないと思います。
0616nobodyさん05/01/26 23:31:40ID:???
というか、そういう状況って、モデルとビューを分離しきれてないんじゃないかと。
0617nobodyさん05/01/27 01:01:07ID:???
BAA、BAA
0618nobodyさん05/01/27 18:57:53ID:???
Mojavi+Smartyを組み合わせた環境で、
Shift-JISで書いたテンプレートに「施」の文字を入れると、
以降の一部が化けてコンパイルエラーになります。
Smarty単独でも起きたのでMojaviは関係ないようですが。

適当なテンプレートに「実施キャンペーン」と入れた結果:
Fatal error: Smarty error: [in hoge.html line 165]: syntax error: unrecognized tag: キャンペーン {$hoge|default:0 (Smarty_Compiler.class.php, line 417) in /usr/local/apache/mojavi/opt/smarty/Smarty.class.php on line 1088
061961805/01/27 18:59:13ID:???
途中で送ってしまいました。
スクリプトから直接echo()した場合や、
フォームからDBへの入出力等だと化けは発生してません。
0620nobodyさん05/01/28 00:11:19ID:???
>>618
マルチバイト文字"施"のなかに'{'が含まれている罠
{literal}でかこっとけ。
0621nobodyさん05/01/28 00:22:59ID:???
>>618
SJISで書いても良い事無いよ。素直にEUCか、UTF-8にしときなさい。
0622nobodyさん05/01/28 00:45:45ID:???
>>621
i-mode専用サイトの場合絵文字が直接うめこめる。
0623nobodyさん05/01/28 05:06:57ID:???
絵文字はフィルタつかわね?
0624nobodyさん05/01/28 06:48:39ID:???
>>602
同じようなことで悩んでいるのですが、この例でassignしてある$rootの
配列の構造がどうなってるのか教えていただけないでしょうか…。
0625nobodyさん05/01/30 10:13:27ID:???
>>624
ちょっといい例が思いつきませんが例えば下のツリーの関係なら
・あ
 ・赤
  ・ポスト
 ・雨
・か
 ・亀

こんな感じの配列です
(
 (あ
  (赤
   (ポスト)
  雨
  )
 )
 (か
  (亀)
 )
)
062662405/02/01 00:46:14ID:???
>>625
なるほど、理解できました。サンクスです。

自分でも調べてみました。
Pear::TreeやPear::DB_NestedSet(初めて知った)を使う、という手もあるみたいです。
ttp://www.codecomments.com/archive224-2004-3-151787.html
0627nobodyさん05/02/02 03:50:11ID:???
HTML_QuickFormのバリデーションで、
「どれか1つが記入されていたらOK」というRuleは
どうやって設定すればいいでしょうか。

いまtextフォームが4つあるんですが、
単純にrequireにしただけだと空欄が認められないし、
何も設定しないと入力チェック自体が出来ないという状態に。
0628nobodyさん05/02/02 09:00:55ID:???
Pearスレ向きな質問のような気がするけど..
addFormRuleでいいんじゃない?
http://hatotech.org/kumatch/archives/000331.html ここのPDFに
簡単に使い方が書いてあるよ。
0629nobodyさん05/02/02 14:12:50ID:???
>>627
スレタイ嫁
0630nobodyさん05/02/03 12:42:41ID:???
windowsXPでSmarty使おうと思ったんですが、template_cの中に
%%11^111^111BD1DF%%debug.tpl.php
のようなファイルができてしまい、アクセスできません。
どうしたら、正常なファイル名のファイルが作成されるのでしょうか?

Apache2
PHP5.0.1
を使ってます。
0631nobodyさん05/02/03 17:48:11ID:???
>>630
コンパイル用ディレクトリの中はそれでいいんだよ。
0632nobodyさん05/02/03 18:51:23ID:???
>>631
レスありがとうございます。
ですが、

Warning: Smarty::fetch(templates_c\%%11^111^111BD1DF%%debug.tpl.php)
[function.fetch]: failed to open stream: No such file or directory in Smarty.class.php on line 1252

というエラーを吐いて進んでくれないんです。
ファイルは確実に存在しているんですが……
ちなみにDemoフォルダ内を動かしています。
0633nobodyさん05/02/03 21:23:37ID:???
>>632
根本的な解決じゃないかもしれないが、
use_sub_dirをfalseにすればなんとかなるんじゃない?
063462705/02/04 19:35:24ID:???
誤爆スマソ
0635nobodyさん05/02/04 20:51:56ID:???
>>634
別に誤爆ってほどでもないかと。
Smarty+HTML_QuickFormは定番だしね。

ちなみに俺はデザインも自分でやってるので、
そういう場合は、JavaScriptをテンプレートに直書きしてる。
分離が出来てなくてダメな事はわかってるけどね・・・。
0636nobodyさん05/02/11 01:40:26ID:???
>>632
フォルダのwrite権限ないんじゃない?
0637nobodyさん05/02/28 10:40:41ID:???
>>632さんはもう解決した?
全く同じエラーがでて悩んでたんですが、私の場合は>>636さんのご指摘通りでした。

IISで動かしてたので環境は違うのですが、
wwwroot->プロパティ->セキュリティ->Everyoneで書き込みを許可したら動きました。

Smartyのcore_write_file.phpで@renameになっており、
ここでのエラーが出力されないため、解りにくかったです。
0638nobodyさん05/02/28 12:50:49ID:???
>>637です
セキュリティの問題があるかもしれないので
wwwrootではなくtemplates_cを書き込みを許可するようにした。
0639nobodyさん05/03/05 18:32:35ID:???
>>637
はじめにマニュアルを読んでから動かせば @renameとか関係ないんで。
自分の落ち度を他人のせいにするもんじゃない。
0640nobodyさん05/03/05 19:51:23ID:???
テンプレもんだな
0641nobodyさん05/03/08 16:14:48ID:AAd9Sq9Q
こんにちは。
購入したPHPのサンプル本で、希望する動きのがあったので
使用しようと思ったのですが、Smartyを使って紹介されていたんです。
Smartyで書かれている部分を、PHPに直すような高度な事も
出来ないので、大人しくSmartyをインストールしようとしてみた
のですが・・・。
書籍のCDROMに入っていたWindows用のSmartyが
Smarty-2.6.6tar.gzで、解凍しようとしても出来ないのです。

インストール方法を探してttp://sunset.freespace.jp/smarty/の
サイトも何度も読んで見たのですが、『ディレクトリファイルに
インストールしてください』という下りから始まっていて、
ウィンドゥズ対応の圧縮ファイル名などの記述すら見つけられなくて。

どなたか、Win用のインストール方法を詳しく教えて頂けない
でしょうか・・・。
お願い致します。
0642nobodyさん05/03/08 16:20:35ID:???
>>641
はい、こんにちは。
ttp://www.vector.co.jp/ に行き、キーワードの欄に「gz」と入力します。
検索ボタンを押すと結果一覧が表示されるのでお好みのソフトを選択しましょう。
0643nobodyさん05/03/08 17:13:05ID:???
う〜ん... 春ですねぇ。
064464105/03/08 17:34:59ID:AAd9Sq9Q
>>642様
ぎゃー!出来ました。解凍、出来ました。
なんか、すごい恥ずかしい質問をしてしまった気がして
穴をほってでも入りたい気持ちでいっぱいです。
+Lahaで解凍できない=winファイルじゃない?
なんて思考回路になってしまった自分の馬鹿さ加減に
悲しくなりました。
ご指導、ありがとうございました。
今から設置に四苦八苦してまいります。
0645nobodyさん05/03/08 18:36:24ID:???
ほほえましいな がんばれ
0646641_| ̄|○ 05/03/08 21:33:23ID:AAd9Sq9Q
何度もすみません。
インストール先がわからないです・・。
解説サイトさんによると
ディストリビューションの/libs/ディレクトリにSmartyライブラリファイル
をインストールして下さい
とあるのですが、ディストリビュージョンって何ですか・・?
検索してみたのですが、Linuxの・・というのばかりが
引っかかってきて、打ちひしがれるばかりです。
どなたか合いの手をお願いいたします。
0647nobodyさん05/03/08 22:05:41ID:???
らは
0648nobodyさん05/03/08 22:07:59ID:???
>>641への回答は↓に任せた
0649nobodyさん05/03/08 22:10:28ID:???
>>646
インストール先はどこでもいい。
0650nobodyさん05/03/09 01:27:21ID:???
>>641
ハッキリ言ってその程度の知識でサーバ管理するのはとても危険。
ついでに、踏み台にされるとはた迷惑。
いや、公開サーバじゃなくてただPHPの勉強してるだけならいいんですがね。
0651641_| ̄|○いまだわからず・・・05/03/09 04:43:26ID:???
>>649さん
ご指導ありがとうございます。
適当な場所でインストールしてみたのですが、
なぜかMySQLの信号機が赤になってしまって
また打ちひしがれ中です_| ̄|○
PHPdevでSmarty使おうとしているのが悪いのかしら
とか思って検索中です。
>>650さん
まさか、ネット上で公開する気なんてまだまだ
先の先の事ですよぅ!
セキュリティの事もわからないのにっ。
一から色々と、勉強中なのです_| ̄|○
知らない事が多すぎて、覚える事ばかりで
沸騰しそうです。
踏み台にしているつもりは毛頭なかったです。
不愉快にさせてすみません・・・。
0652nobodyさん05/03/09 09:02:15ID:???
[原文]
> Install the Smarty library files which are in the /libs/ directory of the distribution.

[日本語訳サイト]
> ディストリビューションの/libs/ディレクトリにSmartyライブラリファイルをインストールして下さい。

[正しかろう訳]
配布物の/libs/ディレクトリにあるSmartyライブラリファイルをインストールします
(ここでいう配布物ってのは、Smarty-2.6.6tar.gzを解凍した物の事)
0653nobodyさん05/03/09 10:14:49ID:???
>>651
踏み台ってのは、君がここの回答者を踏み台にして…って話じゃなくて、
セキュリティの甘いサーバをネット上に放っておくと、そのサーバを”踏み台”にして、
悪事に利用されるよ、そしてそれは万人にとって迷惑な話だよ。って意味だよ。

ぼちぼちで、やったんさい。
0654nobodyさん05/03/09 10:41:51ID:???
>>641
申し訳ないが前提となる知識が足りなすぎる。
足し算がわからない人に因数分解は無理。

書店で入門書を買ってきてコツコツやりな。
どうしてもわからないことは質問してもいいから。

だいたいディストリビューションっていう単語がわからなければ、
Googleで調べればすむ話でしょ?
自分で調べもしないのに聞くのはイクナイよ。

先は長いけどがんばれー。
0655nobodyさん05/03/10 11:16:13ID:1EPX/SpT
すいません、ご存じの方いらっしゃればご教示頂きたく。

smartyのifでの比較演算なんですが、
{if "1010010001000110000115" eq "1010010001000110000115"}equals{/if}
と
{if "1010010001000110000120" eq "1010010001000110000115"}equals{/if}
の両方とも、出力がequalsになるんですが、
何故なんでしょうか?
0656nobodyさん05/03/10 11:36:31ID:???
>>655
たまたまじゃないですか。
0657nobodyさん05/03/10 11:43:54ID:???
昨日久しぶりにバージョンアップしてみたのですが、
{strip}命令って無効になったのですか?
そのまま{strip}って表示されてしまうのですが・・・。
065865505/03/10 11:44:28ID:???
>656
いや、たまたまじゃない。
つか、すげぇ下らない理由だった。

当然、文字列同士で比較していると思っていたのだが、
数字だけで構成しているとどうやら数値として比較するらしい。
で、有効な桁数以上の文字はカットされてしまい、
(俺のトコだと整数で18桁がボーダーのようだが、環境によって変わるかも。)
前方18桁だけ取り出して、数値としてみれば
両辺一致しているのでtrueになるようだ。

末尾にcatで"a"なんてくっつけてやれば、
文字列同士として比較するため、何の問題もでない。

そんな事にも気づかなかった俺って・・・orz
0659nobodyさん05/03/10 13:38:03ID:???
>>658
いや、くだらなくはないよ。
0660nobodyさん05/03/10 15:16:46ID:???
貴重なバッドノウハウよね
0661nobodyさん05/03/10 15:25:45ID:???
PHPホンスレでガイシュツだけどね。
0662nobodyさん05/03/10 17:46:21ID:8Bnn/FyN
>>657
カスタムタグ使ってると、そーなるバグ
smartyのフォーラムよく見ろ
0663nobodyさん05/03/10 22:24:02ID:???
>>658
だからたまたま(有効範囲内が)同じだということだったんだが…
0664nobodyさん05/03/11 11:29:21ID:???
文字列と数字を比較したりしてもそんな挙動することあるな
if( 0 == "test") とか多分true
そういうときに if( 0 === "test") ってやるんだっけか
066564105/03/12 09:17:24ID:???
Smartyのインストールが無事に出来ました
何日もかけて今頃やっとかよっ!って感じなのですが・・_| ̄|○

ご指導してくださった皆様ありがとうございました。
066664105/03/12 11:31:22ID:Eai46BlS
こんにちは。
何度もすみません。
Smartyをインストールできたのがうれしくて、書籍の
サンプルをそのまま使って、ローカルでテストしてみたのですが、
Fatal error: Cannot redeclare loginfunction()
(previously declared in C:\Program Files\Apache Group
\Apache2\htdocs\samples\chap5\mng\auth.php:12)
というエラーが出てきてしまいます。
0667641 続きです05/03/12 11:31:40ID:Eai46BlS
エラーを調べてみたのですが、関数の二重定義 のために
起きているエラーだ、という所まで検討がついたのですが、
いかんせん、書籍に乗っているサンプルを何もいじっていない
コードなので、なにが悪いのか、わからないのです。
もしかして、知らない間に、どこかいじってしまったのかも、と
思って、再度CD−ROMから該当ファイルをインストールしてみたのですが
同様のエラーのままでした。

コードの該当部分は、下記になります。
<?php
require_once("DB.php");
require_once("Auth/Auth.php");
require_once("chap5/MySmarty.class.php");
$dsn="mysqli://php:php@localhost/sample";
$params=array(
"dsn" => $dsn,
"table" => "mng_usr",
"usernamecol" => "uid",
"passwordcol" => "passwd");
function loginFunction(){
$o_smarty=new MySmarty();
$o_smarty->display("login.tpl");
}
<略> ?>
どこが悪いのか、ご指導いただけないでしょうか・・・・。

よろしくお願いいたします。
0668nobodyさん05/03/12 11:47:33ID:???
>>667
smartyとはもう関係無い話だと思うのだが。。
loginfunctionが二重定義されているという事ならば、
本当にそうなっているのか、
DB.php、Auth/Auth.php、chap5/MySmarty.class.phpの中や、
さらにその中でrequireやincludeされているファイルを
検索して確かめたらいいのでは?
その上で、どのfunction loginFunctionを使うかはそれを作った人の意向によるかと。
066964105/03/12 12:31:08ID:???
>>668さん
ご指摘ありがとうございます。
ファイル内を、検索して探してみます。

おっしゃる通り よく考えたら、確かにSmartyとは直接
関係なかったですね・・_| ̄|○
すれ汚し、大変失礼いたしました。
0670nobodyさん05/03/13 19:08:22ID:8WQj/L10
Smarty入門~PHP5+テンプレート・エンジンでつくるMVCアプリケーション~
http://www.amazon.co.jp/exec/obidos/ASIN/4798108839

買おうか迷っているので感想キボンヌ
0671nobodyさん05/03/13 19:12:02ID:???
>>670
オビを見るに微妙な内容だな
0672nobodyさん05/03/13 19:27:34ID:???
入門する程のものなのか
立ち読みで十分な希ガス
0673nobodyさん05/03/13 19:56:38ID:???
山田 祥寛 (著)はJavaのライターでは有名な人だな。
0674nobodyさん05/03/13 20:08:38ID:???
まるごとPHPにも書いてるね。
・・・「かいてる」の変換候補一発目がなぜか「Keitel」でびびった。
0675nobodyさん05/03/13 21:11:31ID:???
>>673
PHP界隈でも結構書いてる。ライター一本でちゃんと食っていくのには
そのぐらい書かないと駄目なんだなと、いつも思い知らされる訳だが。
0676nobodyさん05/03/13 22:03:03ID:???
MVCってのは自前かな?
それともMojaviとか使ってるのかな?
0677nobodyさん05/03/13 22:56:19ID:???
>>676
Mojaviを使っていたら、あの帯に書いてありそうな希ガス。
まぁ、それ以前にMVC=フレームワークじゃないし。
0678nobodyさん05/03/13 23:20:57ID:???
smartyで、
$smarty->display([テンプレートファイル名]);
とやると標準出力(ブラウザ)にHTMLが出力されますが、
これをファイルに出力させることはできるのでしょうか?
0679nobodyさん05/03/13 23:28:24ID:???
山田祥寛さんの書くものは疑ってかからないと駄目。
ttp://d.hatena.ne.jp/nadi/20040215#1076810117
ttp://d.hatena.ne.jp/nadi/20040306#1078484912
0680nobodyさん05/03/13 23:54:01ID:???
>>679
でもこの人が書いた基礎PHPって本はホント良いよ。
初心者には超オススメ。

でもtemplate_cのパーミッションを777にしろって
書いてあったのはポカーンだったけど。
0681nobodyさん05/03/14 00:39:54ID:???
>>670
ゴミ同然。買うな。
だいたいPHP5とか明示しててちゃんとPHP5のスタイルで書いてる書籍なんて
いまのところ一冊もない。Smartyが覚えたかったらマニュアルみれ。
日本語に翻訳されたドキュメントもあるしぐぐれば使い方はたくさんでる。
PHP5関連の内容についてはマンモス本の劣化コピー。

>>674
まるごとPHPが有名なのはPEARパッケージの開発者とかが執筆してるから。
コミュニティに一切貢献してない彼が執筆メンバにいることがかなり不思議。

http://angelicwing.net/diary/index.php?mode=one&parent_id=3801
MVC自体わかってない。わけたらいいってもんじゃない。
valueobjectって、、便利だと思ってるの?
そしてコメント欄に注目。PHPにおけるmysqlのdisconnectについて
まったくわかってない。明示的に指定しないのは常識。

>>680
現場でPHPのコード書いた事ない人間の書籍でよく勉強できるよな。
そうやってマニュアル読んだだけの素人が書いた書籍で勉強した
ダメプログラマがダメコードを作る。
この程度のレベルの人間が書籍を書いていることが問題。

でも(趣味で触るだけの)初心者にはいいかもね。
0682nobodyさん05/03/14 00:44:19ID:???
>>681
>明示的に指定しないのは常識。
そうなの?
でも指定してもいいよね?
0683 ◆AngelH/kMI 05/03/14 01:04:47ID:???
>>682
どっちでもいいよ。

connectする -> プログラム終了とともに切断
pconnectする -> disconnectは無視する
だから、どちらにしろあまり意味ないと思うです。
0684nobodyさん05/03/14 01:10:40ID:0xZUZ/dg
羽根の人キタ━━━━━(゚∀゚)━━━━━!!!!
0685nobodyさん05/03/14 01:29:18ID:???
でも使ったあとは後始末、って癖は悪くはないと思うぞ
PHP以外の言語にも手を出そうというならなおさら(GCが増えてきたにしろ)
致命的な差異が出ないなら、初心者の頃はそういう考えから身につけてもいいんジャマイカ
ちなみに漏れは書くのめんどいので閉じないことが多い
0686nobodyさん05/03/14 02:11:46ID:???
言いたい事は分かるが。
でも非機能要求を絶えず意識する癖なんて持っても PHP/web アプリで量的に重いコードを設計する人になられても困る。
ソレはソレ、コレはコレじゃないか。
原理原則やデータベース個々の基礎知識は弁えて当然というのはまた別のプロセスでしっかり身につける方が。
0687nobodyさん05/03/14 02:56:18ID:???
Smartyと関係ないやん。
068868605/03/14 03:46:48ID:???
それもそうだ。スレ違いスマソ。
0689nobodyさん05/03/14 10:18:44ID:???
>>678
fetchで出力内容拾って、phpのファイル出力で吐き出したら?
069067805/03/14 11:14:44ID:???
>>689
なるほど、検討してみます。ありがとうございます。

昨晩から試行錯誤を繰り返し、
現在のところoutputfilterで、出力直前の文字列を横取りし、
ファイルに吐き出すという、ややトリッキーな方法を行っています。
0691nobodyさん05/03/14 11:51:06ID:???
ちゃんと管理して明示的に閉じてるならそれはそれでいいと思うよ
0692nobodyさん05/03/14 21:41:11ID:???
明示的にdisconnectすることには機能的な意味の他に、リソースを
参照している範囲が明確になるという点もあるので「クローズ・削除
しない方が性能的に有利かつPHP的な使い方」というのはアホの理論。
0693nobodyさん05/03/15 00:50:43ID:???
もういいって

>>690
ファイルに書き出すのはob_get_contents()使うのが一番楽と思うよ
069467805/03/15 11:52:00ID:???
>>693
ありがとん
0695nobodyさん05/03/15 17:25:00ID:???
スレ違いかもしれないけどhtmltemplateってのはどう?
http://www.lyricfathom.com/htmltemplate/
0696nobodyさん05/03/16 10:24:48ID:???
使ったことある。結構良いんだけど、自由度が足りない。
記述方法なんかは、スマーチーと似た感じ。ドットがスラッシュになった感じだったかな。
ロジックの追加とかも簡単、まあそれでも自由度が低い。elseとかやりたいなら2、3層前とかから書き直さないといけないから、意味ないし。
0697nobodyさん05/03/16 18:40:40ID:???
>>695
HTMLtemplateのくわしい話MLに、最近ひさびさに
メール流れた〜と思ったら。SPAMでした…orz

2年近く放置してる作者も、それに登録したまんまの俺もどうかしてますが。
あ、でも新しい系列になって発展してたんですな。

俺の感想も>>696に似たようなもんだけど、
元々の割り切りからも考えるに、プログラマからすると
どうしても物足りなさはある。かといって発展拡張を考えるなら
高機能な標準的なテンプレートを使っちまう方が良いし というところ。

でも自分用の軽量なテンプレには部分的にはパクらせてもらった。
テンプレートを使うんじゃなくて、テンプレートを作る上で
参考にするのは良いと思うよ。作りが簡単だし。

0698nobodyさん2005/03/26(土) 16:50:17ID:9cvI6Qz8
smartyでtplファイルの方で、文字列操作ってできます?
123456789
というデータをphpからうけとったのを
456
のところだけ切り取って出力するような・・・
0699nobodyさん2005/03/26(土) 16:59:08ID:???
>>698
{PHP}
じゃダメなの?
0700nobodyさん2005/03/26(土) 17:01:27ID:9cvI6Qz8
>>699
なるべくなら使わないでいたいんですけど、
それがいいのかなぁ
0701nobodyさん2005/03/26(土) 17:04:26ID:???
>>698
修正子使えばできる。ないなら作れるし。
0702nobodyさん2005/03/26(土) 17:08:57ID:???
>>698
substr()を修正子として使うのがよさげ
0703nobodyさん2005/03/26(土) 17:13:51ID:9cvI6Qz8
>>701-702
レスありがとうございます。
http://sunset.freespace.jp/smarty/SmartyManual_2-6-3J_html/
にはsubstrは無いみたいですけど、>>699さんの方法か
何かで定義しなくても使えるものなんでしょうか?

教えて君で申し訳ないです。
0704nobodyさん2005/03/26(土) 17:22:08ID:???
>>703
文字列関数はひっそりと修正子として使える。
0705nobodyさん2005/03/26(土) 17:25:59ID:9cvI6Qz8
>>704
まじすか。
ありがとうございます。使ってみます−
0706nobodyさん2005/03/26(土) 17:32:21ID:???
>>705
$securityをtureにしてると$security_settingで指定しないと使えないから気をつけろよ
0707nobodyさん2005/03/26(土) 17:33:45ID:9cvI6Qz8
tpl上に{substr($hoge,4,3)}
と、書いてみたのですがエラーになってしまいます。
{$hoge}だと123456789と表示されます。
使い方間違ってるのでしょうか?
0708nobodyさん2005/03/26(土) 17:34:13ID:9cvI6Qz8
>>706
あ、それかも。みてみますー
0709nobodyさん2005/03/26(土) 17:39:51ID:9cvI6Qz8
>>706
もしかして、その設定はtpl上で変更するのは無理でしょうか?
私がいじれる権限があるのはtplのみなので鯖管理者に
お願いしないとだめでしょうか?
0710nobodyさん2005/03/26(土) 17:53:07ID:???
>>707
マニュアル読んだ?
修正子の使い方、もうちょっとしっかり読めばできると思うよ。
書き方間違ってるから。
0711nobodyさん2005/03/26(土) 17:53:40ID:???
>>707
修正子だっちゅーねん。
0712nobodyさん2005/03/31(木) 01:53:29ID:D4Jqx9KW
こんにちは。

smartyで読み込んだhtmlの<head></head>のなかに覧の文字が
あると、エラーになってしまいます。
\とか\""\などでかこってみたりしたのすが、駄目でした。
どなたか回避方法をご存知ないでしょうか・・・?

よろしくお願いいたします。
0713nobodyさん2005/03/31(木) 02:02:54ID:???
>>712
ガイシュツ。スレ嫁。

ヒント:SJISの覧には { がかくされている。
0714nobodyさん2005/03/31(木) 02:34:14ID:D4Jqx9KW
>>713
ううぅ。このスレを通しで読んでみたのですが
わからなかったのです。
mbstring.http_output をSJISに、というのが
ソレかな、と思ったのですが、Smarty.class.php
の中に、mbstring.http_output なんてなかったぅ。
php.iniとhttpd.confはSJISに変えてみたのです。
0715nobodyさん2005/03/31(木) 10:54:23ID:???
>>714
{literal}
覧
{/literal}
でどうよ。
0716nobodyさん2005/03/31(木) 11:32:56ID:???
これってめんどくさいよね
みんなどうしてるの?
タグを変えてるとか?

はやくマルチバイトに
完全対応してくれないかな
0717nobodyさん2005/03/31(木) 11:39:58ID:???
そもそもPHPをSJISで書くのが間違ってる。
0718nobodyさん2005/03/31(木) 12:33:56ID:???
Smarty側のタグ{}を別の表記に変えればよい
0719nobodyさん2005/03/31(木) 14:50:48ID:???
>>716
テンプレートもコードもDBもすべてEUC-JPで統一。
出力の段階でSJISにして吐く、ってのは?

print mb_convert_encoding($smarty->fetch('index.tpl'), 'SJIS', 'EUC-JP');

とか、またはアウトプットフィルタで以下のようにするか。

function convert_to_sjis($output, &$smarty)
{
return mb_convert_encoding($output, 'SJIS', 'EUC-JP');
}

$smarty->register_outputfilter('convert_to_sjis');
$smarty->display('index.tpl');
0720nobodyさん2005/03/31(木) 17:13:50ID:???
EUCでやっても
同じ問題がでるだろ?
0721nobodyさん2005/03/31(木) 22:31:52ID:???
この辺参考にどうぞ。
ttp://ns1.php.gr.jp/pipermail/php-users/2003-February/013592.html

デリミタを他の文字に変えても可。<% %>とか。
0722714皇紀2665/04/01(金) 05:48:12ID:jghdOqLB
>>715
出来ました!ありがとうございました。
0723714皇紀2665/04/01(金) 21:04:31ID:jghdOqLB
名前にへんなのがついてる・・・・。
なんでしょうか。この現象は。びくびく。
0724nobodyさん皇紀2665/04/01(金) 22:04:34ID:???
アップグレードお忘れなく!
0725nobodyさん2005/04/02(土) 19:13:00ID:???
皇紀
0726nobodyさん2005/04/03(日) 12:34:52ID:5tuC+LFk
>>724

ttp://www.netsecurity.ne.jp/1_2283.html より

▽ Smarty------------------------------------------------------------
Smartyは、regex_replace変換機能が適切なチェックを行っていないことが原因で
セキュリティホールが存在する。この問題が悪用されると、
攻撃者にテンプレートセキュリティコントロールを回避して任意のPHPコードを実行される可能性がある。 [更新]
2005/03/29 登録

危険度:高
影響を受けるバージョン:2.6.8未満
影響を受ける環境:UNIX、Linux、Windows
回避策:2.6.8以降へのバージョンアップ


っていうことは、regex_replaceを使ってないか、
勝手に他人がテンプレートを変更できる環境でなければ大丈夫ってことかな?

現状、平穏無事に動いているものをアップデートするって勇気がいるよね。。。
0727nobodyさん2005/04/03(日) 14:50:09ID:???
別に現状被害が無くてもセキュリティホールがあるバージョンからアップデートするのは
当たり前の事だと思うんだが。
0728nobodyさん2005/04/03(日) 15:07:18ID:???
現状実害が無いのなら、無用なアップデートをしないのが
当たり前の事だと思うんだが。
0729nobodyさん2005/04/03(日) 16:02:02ID:???
>>728
おまえ、死ぬほど迷惑な奴だな。
0730nobodyさん2005/04/03(日) 16:56:18ID:???
今動いているものを、機能が追加されたとかでむやみにアップデートしないというのは
コンピュータ分野だとまぁその通りなんだけど、セキュリティーホールが見つかって
その穴を埋めないのは保守する上で過失にならないか?
0731nobodyさん2005/04/03(日) 19:02:00ID:???
>730
むやみに変更しないというのは運営者としては正しい判断だろう
頭を使える人はアナウンスをよく見てどちらのリスクが高いか考えるはず、
Apacheにしたってバージョンアップで不具合が起こった事は何度もある
緊急以外の件に関してはしばらく様子をみてやるのが賢い人だと思うね。
0732nobodyさん2005/04/04(月) 04:24:04ID:???
穴の開いたままのバージョンを使ってると
自分側の仕様変更やらで、忘れた頃にあらまあなんて事もあるからね。
さっさとアップデートしておくのが無難だと思うけど。
0733nobodyさん2005/04/04(月) 05:11:45ID:???
>>732
それこそ「動いているものを無闇に変えない」を
自分の書いてるプログラムにも適用ですよ。

とはいえ、自分がPHPを使うメインは個人的な便利なツールの作成だから、
PHP環境は実験的実装上等「常に最新」ですけどね。
0734nobodyさん2005/04/04(月) 11:47:50ID:???
こういう流れでWEBアプリケーションは
現状維持で保守的になっていくわけですね
0735nobodyさん2005/04/04(月) 13:46:26ID:???
実際問題そうだね
Webアプリって個人やSOHOで開発されてるケースが多いけど
数年後に変更しようにも業者が倒産したとか会社はあっても開発者が退職したとか仕様書が無い、といった具合でよくわからなくなってるのが多いよ
たまになんとかなりませんか? って話が来るけど殆どは予算無いっていうから
根本的な解決はせず無理やりつじつま合わせで対処することも多いよ。
話題がかなりそれちゃったな、ごめん。

でもSmartyとはツール使ってれば有る程度は標準的な手法でつくられている事が多いのでまだマシだよね。
0736nobodyさん2005/04/04(月) 15:53:31ID:???
だな
そういうのに限って中見たら
崩れかけのジェンガみたいになってるよな
これでよく動いてるなみたいな
見た目はお城だからクライアントは
すぐ直せるでしょみたいな雰囲気で持ちかけてくるしな
ってこれただの愚痴だな、、、
PEARやSmarty使ってるならまだいいよ。。。
0737nobodyさん2005/04/04(月) 16:13:20ID:???
壊れかけのRADIO
0738nobodyさん2005/04/21(木) 21:02:24ID:SxD/0C5U
なぁ、ちょっと聞いていいか?
SmartyってPHPの標準じゃないんだろ?
普通はPHPの標準ライブラリであるPEARのHTML_Template系を
つかうべきじゃないのか?
0739nobodyさん2005/04/22(金) 01:38:38ID:???
じゃあいつ使うの?
0740nobodyさん2005/04/22(金) 05:01:10ID:xlQLPR84
実稼働させてる、
中規模程度以上のサイトでSmarty使ってる人いる?
将来開発が止まってしまうかもしれない、というリスクはあるから
中核に組み込むのはどうなのかと思ったりするんだけど
0741nobodyさん2005/04/22(金) 05:02:58ID:???
現状でも十分使える気もする。
0742nobodyさん 2005/04/22(金) 07:43:32ID:NegODiov
こんにちは。
どなたか教えて下さい。
Smartyでテーブルを表示させているのですが、
テーブルセルの縦(height="25")の指定はちゃんと反映されて
いるのですが、横幅(width="100")が無視されてしまうのです。
日本語サイトなどをめぐってみたのですが、解決策が
見つからなくて・・・。
どうかご指導よろしくお願いいたします。
0743nobodyさん2005/04/22(金) 09:10:00ID:???
>>742
それSmartyじゃなくてHTMLの問題だろーよ
07447422005/04/22(金) 09:25:44ID:NegODiov
>>743
いえ、それが、HTMLだと問題なく表示されるのですが、
PHPからSmarty(tplファイル)として読み込むと
とたんに横幅が無効になってしまうのです。
0745nobodyさん2005/04/22(金) 09:55:43ID:???
うpして
0746nobodyさん2005/04/22(金) 10:34:08ID:???
>>744
Smartyが生成したHTMLと
問題なく表示されるHTMLと
どこかが違ってるはず。
0747nobodyさん2005/04/22(金) 12:02:00ID:1X8ubYE4
>>740
pearに登録されているからって開発中止にならんという訳じゃないよ
メンテナがやる気をなくせば開発は止まるのは一緒。
0748nobodyさん2005/04/22(金) 13:07:51ID:???
Smarty を PHP4, PHP5 ともに使ってるよ。
複雑なものでもないし、自分で修正できるんじゃない?
つーか、もう安定して枯れてると思うし。
07497422005/04/22(金) 13:59:44ID:NegODiov
>>745 >>746 
レスありがとうございます。
テストしているのは、下記のコードで、拡張子をhtml から
tplに変えたのみなのです。
phpでは $smarty->display("test.tpl"); で読み込んで
います。
よろしくお願いいたします。
0750742 コードです。2005/04/22(金) 14:00:16ID:NegODiov
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>新しいページ 1</title>
</head>
<body>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#C0C0C0" width="300">
<tr>
<td width="200" height="20" bgcolor="#8284CE"> </td>
<td width="50" height="20" bgcolor="#8284CE"> </td>
<td width="50" height="20" bgcolor="#8284CE"> </td>
</tr>
<tr>
<td width="200" height="20"> </td>
<td width="50" height="20"> </td>
<td width="50" height="20"> </td>
</tr>
<tr>
<td width="200" height="20"> </td>
<td width="50" height="20"> </td>
<td width="50" height="20"> </td>
</tr>
</table>
</body>
</html>
0751nobodyさん2005/04/22(金) 14:11:23ID:???
>>750
手元の環境ではそういう現象は起きなかった。
試すまでもなく、普通に考えても起きるわけないんだけどなぁ。
>>746が聞いてるけど、テンプレートとsmarty出力結果の差異はどうなのよ?
0752nobodyさん2005/04/22(金) 14:15:18ID:???
>>750
ブラウザが見てるHTMLを比較してみな。

具体的には、各々のHTMLをブラウザのソースを表示を使って取得して、それらを比較するって事ね。
07537422005/04/22(金) 14:40:09ID:NegODiov
>>751 >>752
レスありがとうございます。
ソースを表示で見る事は思いつきませんでした_| ̄|○
さっそく見てきたのですが、きっちりwidth="50"だけが
消えていました。
なんでなのか、まったく想像がつかないです。
Smartyの嫌がらせとしか思えないです・・・・。
0754nobodyさん2005/04/22(金) 14:44:53ID:???
>>753
なんでもそうだけど、プログラミングってのは、鏡だと思うと良いよ。
自分のやった事が、そのまま反映されてるだけだよ。

後、デバックの極意なんだけど、コーヒーでも淹れて、一服しな。
これは、本当に良く効く。いや、マジで。
07557422005/04/22(金) 14:49:47ID:???
>>754
ありがとうございます。 そーいえば2日徹夜でした。
気がつけばすごい眠いかもです。
・・・せっかくの有給なのに!なんてこったいです_| ̄|○
一回、寝てみます。
0756nobodyさん2005/04/22(金) 15:38:04ID:???
キャッシュが効いてるだけじゃないの?
07577422005/04/23(土) 08:45:37ID:???
こんにちは。
おきてから、ふと思い立ってセルに折り返し無し指定を
付けてみたら、意図した横幅で表示できました。
ご指導してくださった皆様、ありがとうございました。
0758nobodyさん2005/04/23(土) 11:56:15ID:???
>>756 に一票 おそらくそれでしょ
0759nobodyさん2005/04/23(土) 11:56:52ID:???
>>757 を見ずにカキコしてしまいました。 鬱。
0760nobodyさん2005/04/23(土) 16:06:08ID:???
教室の通路を通るときに、

   こんなところにたって雑談している女いると
    ↓
机 机女 机 机
   女
机 机  机 机

   わざわざここを通って女の尻にちんぽ擦りつけながら通った
     ↓
机 机女 机 机
   女
机 机  机 机
0761nobodyさん2005/04/23(土) 18:16:06ID:???
えいじ
0762nobodyさん2005/04/24(日) 16:48:56ID:f26GRMZz
質問です。
{foreach}{/foreach}なんかのループから抜けるにはどうしたら
よいのでしょうか。
php で言う break; がしたいのです。
0763nobodyさん 2005/04/24(日) 18:32:34ID:???
なんらかの意図によって変ってくるのでは?
0764nobodyさん2005/04/24(日) 18:43:22ID:f26GRMZz
>>763
ありがとうございます。そういうことではなくて、
{foreach}
{if $hoge == $fuga}
{break}
{/if}
{/foreach}

といったような{break}なんてのがあればいいのですが、無いですよね。
相当するものってありますでしょうか。
0765nobodyさん2005/04/24(日) 21:16:16ID:???
>>764
そういう処理はSmartyに配列をアサインする前に済ませておくものでは?
0766nobodyさん2005/04/24(日) 21:22:02ID:???
>>764
僕もassign or appendする前に処理しとくべきだと思うが、
無理矢理やるならこんなかな

{eval var=0 assign="a_break"}
{foreach from=$a_array item=a_item}
{if $a_item == '以降break'}
 {eval var=1 assign="a_break"}
{elseif $a_break==0}
 {$a_item}
{/if}
{/foreach}
0767nobodyさん2005/04/24(日) 22:05:50ID:???
showは使えない?
0768nobodyさん2005/05/02(月) 03:39:29ID:zPNJQI1N
修飾子にオブジェクトのメソッドを指定する方法は
ないのでしょうか?
0769nobodyさん2005/05/05(木) 23:04:03ID:HD8kZxJB
テンプレートの中にサブルーチンみたいなものを書くことはできない?
離れた場所に何度も出てくる要素を、サブルーチン呼び出しみたいに
一元的に記述したいんだけど。
あらかじめmodelで処理しておけばいいのかもしれないけど
視覚的要素だからテンプレートの中に入れておきたい
0770nobodyさん2005/05/05(木) 23:25:33ID:???
プラグインとか{php}
0771nobodyさん2005/05/05(木) 23:28:23ID:???
>>770
php直書き出来たんだ
激しくさんくすこ
0772nobodyさん2005/05/06(金) 00:15:12ID:???
そしてそれが意味することの重大さに戦慄を覚えるのであった。。
いや、まぁ、デザイナと喧嘩してるんでもなきゃ別に問題ないんだけどね。
0773nobodyさん2005/05/06(金) 00:49:55ID:???
コワイコトイワナイデ
0774nobodyさん2005/05/06(金) 01:25:35ID:???
普通にinclude使うのが安全だと思うけどねえ。
パラメータも渡せるし。
まあ本人が満足なら良いんだけど。
0775nobodyさん2005/05/06(金) 01:28:58ID:???
>>769
SSIじゃだめ?
0776nobodyさん2005/05/09(月) 10:21:54ID:Ogk2vGAk
$aaa['111']['222']['333'] = 'あいう';
$bbb['123'] = '222';
と定義しておき
{$aaa.111.$bbb.123.333}
とし「あいう」と表示したいのですが
意図した通りには動作しません。感覚的には
{$aaa.111.($bbb.123).333}
というような事をしたいと思っています。
template tool-kitだと
[% $aaa.111 _ $bbb.123 _ 333 -%]
というような感じで出来たと記憶していますが
smartyの場合はどのようにすればよいでしょうか。
0777nobodyさん2005/05/10(火) 12:35:26ID:???
{$aaa[111][$bbb[123]][333]}ってできない?
っていうかテンプレートにこんな変数書かなくてすむように
ロジックを工夫したほうがいいよ。
0778nobodyさん2005/05/10(火) 15:41:39ID:???
レスありがとうございます。
>>777
>{$aaa[111][$bbb[123]][333]}ってできない?
これでは上手くいきませんでした。

>っていうかテンプレートにこんな変数書かなくてすむように
>ロジックを工夫したほうがいいよ。
MVCモデルを実現しようとした場合、このようなケースに遭遇する事は
多いと思うのですがいかがでしょうか。
0779nobodyさん2005/05/10(火) 17:11:51ID:???
ほんとだ。{$aaa[111][$bbb[123]][333]}
ではコンパイルエラーになるね。
{$aaa.111[$bbb.123].333} ではどう?

コンパイルファイルのコードを確認してみたらいいかも。

どうしてもテンプレートでやりたきゃ
{assign var="ccc" value=$aaa.111} とかなんとか。
0780nobodyさん2005/05/10(火) 17:16:42ID:???
どうも "[]"の入れ子がだめみたい。
0781nobodyさん2005/05/10(火) 17:53:28ID:???
>{$aaa.111[$bbb.123].333}
これでも駄目でした。
>{assign var="ccc" value=$aaa.111} とかなんとか。
これも考えたのですがassign関数は$aaa.111を$aaa['111']とは見てくれず
「$aaa . ".111"」と解釈されてしまうみたなんです。
出来上がったキャッシュファイル、Smartyのソースを確認して検証してみます。
0782nobodyさん2005/05/10(火) 18:19:28ID:???
{php echo $this->_tpl_vars['aaa']['111'][$this->_tpl_vars['bbb']['123']]['333']}

こんなこともわからんのか馬鹿どもめ!!!!!!!!
0783nobodyさん2005/05/10(火) 18:53:40ID:???
{$aaa[111][$bbb.123][333]}

{$aaa.111[$bbb.123].333}

{assign var="ccc" value=$aaa.111}
{assign var="ddd" value=$bbb.123}
{$ccc[$ddd].333}

{php}
echo $this->_tpl_vars['aaa']['111'][$this->_tpl_vars['bbb']['123']]['333']
{/php}

すべて"あいう"と表示されるけどなぁ。
あと{php}は$security=trueで使えないってことだけ。為念。
0784nobodyさん2005/05/11(水) 13:47:45ID:???
改めて>779、>782、>783の方法で確認してみた所、正常に表示出来ました。
しかし開発中のソースで試したところ、期待通りの動作をしませんでした。
原因を追ってみると数字と文字(配列と連想配列?)の場合で挙動が違うようでした。

・定義
$aaa['kkk']['222']['333'] = 'あいう';
・テンプレート設定
1={$aaa[kkk][222][333]}
2={$aaa.kkk.222.333}
・結果
1=
2=あいう
・キャッシュされたphpの中身
1=<?php echo $this->_tpl_vars['aaa'][$this->_sections['kkk']['index']][222][333]; ?>
2=<?php echo $this->_tpl_vars['aaa']['kkk']['222']['333']; ?>

感覚的には{$aaa['kkk'][222][333]}とかでいけそうですがエラーでした。
初めに提示した前提条件が自分の実環境と異なり、オマエらの労力を無駄に消費させてしまい申し訳ありません。
0785nobodyさん2005/05/11(水) 17:37:03ID:???
Smarty_Compiler.class.php 1750行以降
[]のなかのインデックスは数字が変数じゃなければsection変数に変換されるね。
この挙動はこれでいいのかな?

確かに知らなきゃはまる。
0786nobodyさん2005/05/13(金) 12:08:00ID:???
ぶっちゃけSmartyはデザイナーとの共同作業には向かないでしょ。
テンプレートにロジックは多少なりとも入れてはいけないと
思うのだが、なんでSmartyなんてヘンテコな物が流行るのか?
HTML_Template_Sigma使えよお前ら。
0787nobodyさん2005/05/13(金) 12:55:02ID:???
>>786
もとデザイナーで今はプログラマーに転職した俺から言わせれば、
Smartyはデザイナーとの共同作業に向いてると思うぞ?

別にデザイナーにSmartyの形にしてもらう訳じゃない。
デザイナーには本当にデザインだけしてもらう。
レイアウトの関係上、ダミーでいいから勝手ににデータを固定で打ってもらう。
例えば、金額のところには、\999,999,999とか見たいな感じ。

そのデザインが出来上がったら、プログラマ側で、そのデータ固定になってた部分に
ロジックなりを書き込む。
此処で、デザインがちょっと・・・という事になっても、そのロジックが書いたままの
テンプレートをデザイナーに渡して修正してもらえば良い。

というのは、Smartyの記述がされていても、HTMLとして普通に開けて、
データ固定で売ってもらった所が変わってるだけだから、
デザインする上では何の支障も無い。
0788nobodyさん2005/05/13(金) 16:21:59ID:???
>>787
じゃあ、ロジックを入れたあとにデザインの修正が出た場合はどうする?
デザイナーが持ってるマスターのテンプレートを修正してもらって
その後ロジック入れなおしだ。Smartyという名前なのにスマートじゃないね。
大体テンプレートにロジックいれたらテンプレートの意味ないんだが。
テンプレートってのは純粋なHTMLであるべきで、テンプレートをブラウザで
見たらどのような物か分かるべきで、オーサリングツールで何の問題もなく
開くことができるべき。
0789nobodyさん2005/05/13(金) 16:28:18ID:???
>>788
ロジックって、ループとかその程度じゃないの?
表形式のデータの部分をループさせるとか。

それに、そういったロジック入れたままでもデザイン修正はできるよね。
ロジック入ったままのファイルをデザイナーに渡して、それを修正してもらえばいいんだし。

つうか、Smartyのロジックが掛かれてても、ブラウザで普通に見られるし、
何の問題も無いような・・・

Smarty使ったことないのかな・・・
0790nobodyさん2005/05/13(金) 16:42:31ID:???
アンチSmartyスレ立ててそっちでやってね
0791nobodyさん2005/05/13(金) 16:45:25ID:???
>>788
テンプレートにロジックを入れると気持ち悪いという主張は理解出来る。
ただ、php 自体 html にロジックを埋め込むための言語として出来たもんだし、
そういう問題意識は php プログラマには希薄なんだよ。
0792nobodyさん2005/05/13(金) 18:47:13ID:???
>>788
PHPがリクエストに対する処理から吐き出しまでを行い、
処理データを取捨選択するのがsmartyという流れだと思えば良いんじゃない?
smartyは基本的に流れてるデータをキャッチするだけなんだしさ。
0793nobodyさん2005/05/13(金) 19:40:27ID:???
PHPでテンプレートエンジンが使われるようになったのは
PHPコードにデザインが入っているのが「キモい」からだろ?
SmartyによってせっかくPHPコードからHTMLを分離したのに
HTML側にロジックが(多少なりとも)入ってしまったら
元の木阿弥だろっつーのよ。理解できんだろうなあんたらには。
0794nobodyさん2005/05/13(金) 20:12:17ID:???
>>793
言わんとしてることは分かるけど、その問題はSmarty独自の問題なのか?
それは使ってる人自体の使い方などが悪いとかそういう問題じゃないの?
0795nobodyさん2005/05/13(金) 20:12:52ID:???
>>793
>PHPでテンプレートエンジンが使われるようになったのは
>PHPコードにデザインが入っているのが「キモい」からだろ?

前提が間違っとる。

おれはSmartyってのはMVCのViewをデザイナに(半ばだまして)やらせて
プログラマが楽するものだと理解している。つまり、テンプレートエンジン
のなかで、ロジックが記述可能なものはそういう意図で作られているわけだ。


Viewの機能を受け持つ以上、あの程度のロジックは書けないと俺が困る。
0796nobodyさん2005/05/13(金) 20:21:31ID:???
>>793
じゃあどうやって可変長の配列をテンプレートで扱うのよ?
「ロジック」ったってPHPコードをベタ書きするわけじゃなし。
0797nobodyさん2005/05/14(土) 00:24:43ID:???
>>795
あんたと仕事をするデザイナーは余計なこと(Smartyの独自タグ)まで
覚えさせられて可哀相にな。プログラマが楽するためにデザイナーが
犠牲になるわけだ。つくづく自分勝手な考え方だな。

>>796
例えばHTML_Template_Sigmaでは、ループや分岐となる部分は
とりあえず<!-- BIGIN hoge -->と<!-- END hoge -->で囲むんだよ。
その囲んだ部分をどのように使おうと自由。
デザイナーはまったく変なロジックなど意識しなくて良いし、
何よりもただのコメントなので妥当なHTMLとなり、オーサリングツール
でも問題なく開けるし、ブラウザで開いてもどのようなテンプレートか
一目瞭然で分かる。
0798nobodyさん2005/05/14(土) 01:09:26ID:???
色んな分業の仕方があると思うけど、
俺の関わったプロジェクトだと
・デザイナー:html/JSPによる値を画面に展開するロジック
・プログラマ:J2EE部分のビジネスロジック
だった。その程度のことが出来ないデザイナは要らないって。

ただ、これは社内のイントラの仕事だったので
デザインの比重が大きいものだと、本当に絵を描くだけ
アイコン作るだけのデザイン担当者も必要だと思う。
0799nobodyさん2005/05/14(土) 03:14:15ID:???
>>798
そういうプログラマよりの自分勝手な考えの奴が多いから
プログラマは性格が悪いなどのレッテルを貼られるんだよ。
ちょっとは人の身になって考えるということをしてみたら?
そりゃデザイナーでもJavaScriptだのJSPやSmartyなどの独自タグ
覚えようとする前向きな人もいるけど、やっぱりデザイナーの仕事は
純粋なデザインであってコーディングはプログラマの仕事だろ。
逆にプログラマはHTMLやCSSなどの知識はあって当たり前で、
俺はDreamweaverで雛形作って渡したりしてるけどね。
0800nobodyさん2005/05/14(土) 03:23:02ID:???
>>799
?それをデザイナよりの自分勝手な考えとは言わないのか?
08017952005/05/14(土) 03:48:00ID:???
>>799
でもさ、デザイナだってテーブルの行ごとに色分けしたくなったくらいで
プログラマの仕事が終わるのを待ってたら締め切りが守れないぜ。

けして意地悪からだけでデザイナの仕事を増やしている訳でなく、
そういったデザインよりのロジックはデザイナがやるのが良いという
局面もあるんじゃないかな。とくに細かい変更要請がクライアントから
頻繁に飛んでくるのにつきあわなきゃいけないとか言う場合には。


あと、BIGINじゃなくって、BEGINね。
Template_SigmaってなつかしのPHPLibのテンプレートみたいなのかな
あれには苦しめられた。

そういうpush型のテンプレートエンジンに興味があるならjavaだけどEnhydra
なんか面白いかもよ。機会があったら使ってみ。
0802nobodyさん2005/05/14(土) 04:08:42ID:???
>>799
そういうデザイナーは、よっぽどものすごいデザインでもできなければ、淘汰されるだけだと思うけどなぁ。
0803nobodyさん2005/05/14(土) 04:27:24ID:???
>>800
>799はプログラマとしてデザ寄りの考え方だから自分勝手じゃない。
自分はデザ側だから、逆に>798にも激しく同意なんですけどね
0804nobodyさん2005/05/14(土) 05:06:39ID:???
HTML_Template_Flexyだと タグの属性に flexy:if="foo" とか
flexy:foreach="foo,key,value" とか書けるけどこれはどう?
おいらは気に入ってます。

ただPEAR一家のみなさんはinclude_pathにあること前提で書かれてるから
Mojavi3と組み合わせると(回避する方法がないわけではないけど)autoload絡みでちと面倒。
0805nobodyさん2005/05/14(土) 06:11:56ID:???
>>803
ほんとに、デザイナーとして同意なのか?

俺は素人のお遊びサイト作るのに、Mojavi+Flexyで作ってるけど、以前と比べて、ずいぶん楽ちんになったぞ。
これ、プロ(金がらみ)の立場で見ると、制作にかかるコストが減るって事だろ。
そっちを優先しないで、デザイナーとかプログラマの職域がとか、言ってたんじゃ儲からんだろ。
0806nobodyさん2005/05/14(土) 09:45:30ID:???
>>797
Smartyと比べても余り変わらなくないか?
Smartyのループは{section ループの条件式}と{/section}で囲むだけ。
コメントにはならないが、普通にHTMLでは文字として表示されるだけ。
オーサリングツールだろうが問題無く開けるし、ブラウザでも問題無い。

それに、なんか話がおかしくなってないか?
ロジック云々言っていたのに、HTML_Template_Sigmaでロジックの話になってる。
結局、ロジック書くんじゃん。

最初はロジック書くのがどうたら言ってたのに・・・
0807nobodyさん2005/05/14(土) 11:59:01ID:???
>>806
797ではないし、Template_Sigmaは使った事ないんだけど、PHPLibの
テンプレートクラスと同じようなものだとしたら、テンプレートファイルには
基本的にブロックの開始/終了と変数のプレースホルダーしか書けない。

で、php側でブロックを繰り返したり、またはブロックの中身を読み込んで
適当に加工したり、あるいは完全に置き換えたりするわけ。
0808nobodyさん2005/05/14(土) 12:16:28ID:???
Smartyでも、こんな感じでHTMLのコメントで囲めば動くでしょ。

<!-- {section ループの条件式} -->
ループする内容
<!-- {/section} -->
0809nobodyさん2005/05/14(土) 12:48:10ID:???
>>808
「ループの条件式」ってところがロジックになってんだろ?
0810nobodyさん2005/05/14(土) 13:15:46ID:???
何このスレ
必死すぎてキモイ
0811nobodyさん2005/05/14(土) 13:32:06ID:???
良く分からんがSmartyより便利なものがあったら
じゃんじゃん教えてくれ
0812nobodyさん2005/05/14(土) 14:12:12ID:???
つHTML_TEMPLETE
0813 ◆AngelH/kMI 2005/05/14(土) 14:16:56ID:???
|x・)っ HTML_Template_Flexy
まあ、でもなんだかんだ言っても一番広まってるってのは強みやね。

Flexyみたいに、デフォルトをHTMLエスケープありにしてほしいところだけど・・・。
0814nobodyさん2005/05/14(土) 17:25:25ID:???
Smartyとかいう得たいの知れないモジュール使いたくないっしょ。
やっぱりPEARが一番安心。
0815nobodyさん2005/05/14(土) 20:04:33ID:???
>>808
Smartyはそれで動くんだ。Flexyではそれは動かなかった。
0816nobodyさん2005/05/14(土) 21:08:32ID:???
Flexy的には
<div flexy:foreach="array,key,value">
ループする内容
</div>
というのもありですな。
0817nobodyさん2005/05/14(土) 21:20:19ID:???
>>816
Flexyで、if 〜 else と続く場合に、うまく隠す方法はあります?
0818nobodyさん2005/05/14(土) 21:42:44ID:???
>>817
elseが入ると無理っぽい。
だから事前に
if ($foo) {
$flexy->setData('foo', true);
$flexy->setData('_foo', false);
} else {
$flexy->setData('foo', false);
$flexy->setData('_foo', true);
}
として、テンプレートでは
<div flexy:if="foo">〜</div>
<div flexy:if="_foo">〜</div>
とやってる。
elseifとか複雑な分岐があるときも似たような感じで。
0819nobodyさん2005/05/15(日) 04:10:00ID:???
ところで、ここってPHPのテンプレートエンジンを比較するスレなんですか?
0820 ◆AngelH/kMI 2005/05/15(日) 05:00:20ID:???
優劣は決められるものじゃないと思うよ。
どれも一長一短はあるんだし。
0821nobodyさん2005/05/15(日) 13:05:08ID:???
俺がSmartyを使わない理由

・独自タグによりロジックとデザインの分離ができていない。
・標準ライブラリではない。
0822nobodyさん2005/05/15(日) 18:50:44ID:???
標準ライブラリしか使わないなんて将来見えてますね
0823nobodyさん2005/05/15(日) 18:58:47ID:4RUI5R7m
テンプレートエンジンなんて
自作のシンプルのが一番使いやすいでしょ。
0824nobodyさん2005/05/15(日) 19:16:57ID:???
>>822
Smartyなんか使ってるあんたの将来は終わってますよ?
0825nobodyさん2005/05/15(日) 20:18:52ID:???
まぁ一応本家phpと同様 php.net 配布なわけだけどね。でもなぜPearに入らないんだろう?

独自タグっていうのもJSPと同じ位置づけと考えれば納得できると思う。
上で書かれているようにMVCのViewな訳だし。あれはあれで需要があるのは理解出来る。
0826nobodyさん2005/05/15(日) 21:39:42ID:???
>823
Smatyをシンプルに使えばいいんじゃないの?

でも、オレも
・拡張が容易
・キャッシュ処理
あたりが同等で使い勝手がいいのがあればそっちに移りたい。
0827nobodyさん2005/05/15(日) 22:35:38ID:???
新しいサイボウズってPHP+Smartyだっけ
0828nobodyさん2005/05/16(月) 00:05:33ID:???
yes
0829nobodyさん2005/05/17(火) 07:47:44ID:???
DBもMySQLの組み込みかなんかになるんだっけか
0830nobodyさん2005/05/21(土) 17:12:14ID:???
Smarty使う奴は例外なく雑魚
0831nobodyさん2005/05/21(土) 20:23:48ID:???
雑魚に雑魚とか言われてもなぁ(藁
0832nobodyさん2005/05/21(土) 21:57:23ID:???
Smarty遅くね?
速度が何か気になるんだよなァ
0833nobodyさん2005/05/21(土) 22:11:55ID:???
ウチはそういう時はキャッシュをメモリディスクに入れてる。
まぁ、ホントに smarty が悪いのか調べるのが先だろうけど。
0834nobodyさん2005/05/22(日) 01:29:43ID:???
>>831
その程度の反論しかできないんだからよほどの雑魚なんだな。
やっぱりSmarty使う奴は例外なく雑魚
0835nobodyさん2005/05/22(日) 01:45:00ID:???
>>834
なぜSmartyを使う奴が例外なく雑魚なのかを理論的に説明するのが先。

これが説明できない限り、>>834が自分自身で言っている『その程度の反論』になる。
つまり、>>834が雑魚となることを自分自身で宣言した。

という訳で、説明くださいw
0836nobodyさん2005/05/22(日) 03:15:55ID:???
>>835
デザインとロジックの分離ということについて
もう少ししっかりと考えてみたら?
そうすればSmartyが屑中の屑であることが
よく理解できると思うよ?
もし理解できないのであればお前のプログラミングセンスが
無いんだろうね。OK?
0837nobodyさん2005/05/22(日) 03:24:17ID:???
↑何か思いこみハゲス
0838nobodyさん2005/05/22(日) 03:26:30ID:???
>>836
相手に答えを求めるような方法は理論的とは言えない。

デザインとロジックの分離ということについて
もう少ししっかりと考えてみたら?
そうすればSmartyを使わない奴が屑中の屑であることが
よく理解できると思うよ?
もし理解できないのであればお前のプログラミングセンスが
無いんだろうね。OK?

と返されたらどうするの?

なぜ、Smartyを使うとデザインとロジックの分離が出来ないかを具体的に説明できないのなら、
お前さんの理論に現実味が無い事になる。

それとも、Smartyの知識が無い事を知られるのが怖いのか?
大抵の奴はSmartyについてちゃんと調べたりしてないで語ってる奴が多い。

例えば、>>788のような意見。
ロジックは記述できるが、記述しなければいいだけ。
つまり使う人間次第でロジックとデザインは分離できる。

>テンプレートってのは純粋なHTMLであるべきで、テンプレートをブラウザで
>見たらどのような物か分かるべきで、オーサリングツールで何の問題もなく
>開くことができるべき。

この意見だって、Smartyを知らないからこそ出てくるもの。
純粋にHTMLにしたければ、HTMLのコメント形式に出来る事がマニュアルに明記されている。
マニュアルから引用すれば、
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
というようにしっかりと記述されている。
0839nobodyさん2005/05/22(日) 03:47:33ID:???
Smarty重いから、Smartyより軽くて、Smartyより柔軟で、Smarty高機能なテンプレートエンジンがあったら
別に未練もないし、すぐ乗り換えるんだけど。

教えてくれよ>>834
0840nobodyさん2005/05/22(日) 03:51:12ID:???
多分、>>836はSmartyのHTML用構文が覚えられなくて干されたデザイナー。
0841nobodyさん2005/05/22(日) 06:41:17ID:???
ってゆーか、せっかくSmarty導入したのに・・・
 php側でテンプレート変数にhtml流し込むのヤメレ!そこのプログラマーさん!
 tplの中のforeach文壊すのヤメレ!ちっとはマニュアル読め!そこのデザイナーさん!
ってことにはなりやすい
もっとシステムをガチガチにすりゃいいという考え方がないわけでもないけど
やっぱりこれは別にSmartyのせいじゃなくて使ってる側の使い方の問題
0842nobodyさん2005/05/22(日) 18:31:08ID:???
MVC実践しようとなると速度が犠牲になるのは仕方がないよ
0843nobodyさん2005/05/22(日) 21:51:49ID:???
>>842
なんでSmartyが遅いというのをMVCモデルのせいにしてるわけ?
0844nobodyさん2005/05/23(月) 00:38:50ID:???
Smartyにオーバヘッドがあるのは確かだから必要ない案件
では使わなければいいだけ。

みんな必要だから使ってるんだが、それがわからない人がいる。
0845nobodyさん2005/05/23(月) 03:35:36ID:???
>>838
>例えば、>>788のような意見。
>ロジックは記述できるが、記述しなければいいだけ。
>つまり使う人間次第でロジックとデザインは分離できる。

はぁ・・・。想定の範囲内のウンコみたいなレスご苦労様です。
Smartyでそのような記述ができることは知ってるんだが。
でもSmarty使ってる奴でそんな使い方してる奴いるか?(いないね)
そもそもそのような(テンプレートにロジックを記述しない)使い方
をするならSmartyなんか使うわけが無い。
だからSmartyを使う奴はロジックとデザインの分離というものが
分かってない屑であるとはっきり言えるのよ。OK?
0846nobodyさん2005/05/23(月) 04:23:22ID:???
>>845
PHPはhtmlとPHPコードを混在した使い方ができるし、事実そのように使われている。
よってPHPを使うやつはロジックとデザインが分離できない。

みたいな論法かな。
0847nobodyさん2005/05/23(月) 09:22:25ID:???
ぶっちゃけ、Smartyつかうとロジックとデザインの分離が出来ないといってるけど、
じゃあ、何を使うと分離できるのかが知りたいよな。

それに、
>Smartyでそのような記述ができることは知ってるんだが。
>でもSmarty使ってる奴でそんな使い方してる奴いるか?(いないね)
自分でも言ってるけど、使う側の人間の問題じゃないのかな?
つまり、そういった記述すれば分離できる。

だけどさ、テンプレートにロジックを記述しない場合、
多少なりとも、ロジックの中にデザインが入るんだよな。
テンプレートだけに注目してるみたいだけど、この変どう考えてるんだろう・・・
0848nobodyさん2005/05/23(月) 10:04:32ID:???
オイラにはビジネス・ロジック(M)とプレゼンテーション・ロジック(V)を区別できていない、
或いは意図的に区別していないように見える。
0849nobodyさん2005/05/23(月) 10:20:42ID:???
>>848
あ、俺も思った。
0850nobodyさん2005/05/23(月) 11:11:06ID:???
そもそも845の言ってることにはプレゼンテーションロジックという概念がない
ロジックとデザインって言ってるだけで、何がなんだかわかってないのではないか?
0851nobodyさん2005/05/23(月) 16:37:02ID:???
俺も
ビジネスロジックの中にデザインを混入するより
テンプレートの中にプレゼンテーションロジックを書いた方が
ずっとキレイだと思う。
0852nobodyさん2005/05/23(月) 20:09:04ID:???
ビジネス・ロジックとプレゼンテーション・ロジックについて
説明してくれないか?
0853nobodyさん2005/05/23(月) 21:41:52ID:???
http://www.ipa.go.jp/jinzai/esp/15mito/gaiyo/14-17.html
これができたら845がほしいものになるんだろうな。
0854nobodyさん2005/05/24(火) 00:52:00ID:???
デザイナの裁量の範囲内に置きたいということもあるんだけどなぁ
0855nobodyさん2005/05/24(火) 04:03:50ID:???
>>853
できたらって、15年度じゃん。
開発成果にあるリンクは404だし、成果報告も中身が全然無いし、金の取り逃げか・・・
0856nobodyさん2005/05/26(木) 00:22:45ID:???
Smarty使いは劣等種
0857nobodyさん2005/05/26(木) 00:51:43ID:???
ナチ公は何を使ってるんだ?
0858nobodyさん2005/05/26(木) 12:41:56ID:???
ナチスも日本軍も仲良し。今も仲良く行こうぜ。
0859nobodyさん2005/05/28(土) 16:36:41ID:sWsyG2zN
テンプレートに書き込む変数は小文字と大文字どちらが推奨でしょうか?
0860nobodyさん2005/05/28(土) 17:40:26ID:???
>>853,855
ttp://www.kuwata-lab.com/kwartz/

コレのことだよね? ボクは使わせてもらってるけど……
0861nobodyさん2005/05/28(土) 21:50:44ID:???
>>860
Smartyで十分だなぁ・・・
0862nobodyさん2005/05/28(土) 22:19:34ID:???
まだRubyしかないのか
既に放置?
0863nobodyさん2005/05/28(土) 22:29:04ID:???
よく読んだらPHPもあるみたいだね
なかなか便利そうだが
コマンドラインから実行しなきゃいけないのが
流れ的にどうかな…
0864nobodyさん2005/05/28(土) 22:42:05ID:???
Kwartzよいかも?
もっさり感がイヤでSmartyはちょっとなぁと思ってたところなので
検討してみますか
0865nobodyさん2005/05/29(日) 00:14:17ID:???
おもしろそうだなぁ。
自分的には Makefile でユニットテストや DB クラスの自動生成とかデプロイとか
管理してるから相性もよさそう。
0866nobodyさん2005/05/29(日) 01:37:35ID:???
>>860
サンクス
なんかそれならXSTLつかえばーって気がする。
0867nobodyさん2005/06/01(水) 17:28:49ID:???
Smartyよりincludeのほうが使いやすいわ〜。面倒くさいもん。Smarty。
0868nobodyさん2005/06/01(水) 19:15:23ID:???
>>867
Smartyも理解できないの?
とても知的生命体とは思えないんですが?
0869nobodyさん2005/06/01(水) 19:17:03ID:???
>>868
は?理解してますが何か。
反論するならもっと論理的にいこうよw
0870nobodyさん2005/06/01(水) 19:23:56ID:???
また>>834かよ
0871nobodyさん2005/06/01(水) 19:24:05ID:???
>>869
理論的に反論しろというなら、Smartyとincludeを対比させて、
理論的に、どういった部分が面倒とかincludeが優れているかを説明しないと
説得力に欠けるよなw
0872nobodyさん2005/06/01(水) 19:35:14ID:???
◆include
≪メリット≫
モデル内でいちいちappendとかassignとかしなくても変数がそのまま使える。
直接<?php ?>や<?=?>が埋め込める。
≪デメリット≫
ない。最強。

・Smarty
≪メリット≫
キャッシュ。
修正子が使える。
≪デメリット≫
無駄に面倒。assignとかappendとか。
<?php ?>が埋め込めない。最悪すぎる。
0873nobodyさん2005/06/01(水) 19:55:43ID:???
>>872
><?php ?>が埋め込めない。最悪すぎる。
{php}{/php}ってしってるか
0874nobodyさん2005/06/01(水) 22:54:25ID:???
フーン
確かにincludeで済むような気がしてきたw
0875nobodyさん2005/06/01(水) 23:14:59ID:???
Smartyの明確なメリットって
「わりとデザイナーに分かりやすい」ってことくらいじゃね?
でも実際は、デザイナから受け取ってから
こっちで埋め込むことになるから(俺の場合)
includeでこと足りる気がするなぁ
どうなんだろ
0876nobodyさん2005/06/01(水) 23:37:41ID:???
includeで事足りる人は、それでいいんじゃないの?
0877nobodyさん2005/06/01(水) 23:59:35ID:???
ちなみにどういうメリットがある?
0878nobodyさん2005/06/02(木) 01:32:18ID:???
>>877
いいから寝ろ
0879nobodyさん2005/06/02(木) 01:40:30ID:???
>>875
Smartyは機能が豊富すぎてデザイナには分かりづらいだろうよ。
0880nobodyさん2005/06/02(木) 02:07:01ID:???
くだらんこといってんじゃねぇよ
0881nobodyさん2005/06/02(木) 02:22:22ID:???
キャッシュが増えすぎると遅くなるのってどうにかならないの?
遅くなったらキャッシュの意味がないんだけど。
0882nobodyさん2005/06/02(木) 07:41:30ID:???
include >>>>> 激遅Smarty
でファイナルちんぽ?
0883nobodyさん2005/06/02(木) 09:25:59ID:???
>>875
俺もその形態で動いてる。
デザイナーにSmartyマニュアル渡して「覚えてくれよ」って言っても
「はぁ?」とか言われそうだし、デザイナーが外注の場合も多いわけで。

多分、Smartyはデザイナーが仕様を覚えて、プロジェクトで使う変数などの仕様を予め共有化させ
完璧にMVCとして稼動した時に性能が発揮されるんだろうなぁって思う。
まぁ、当然と言えば当然なのか。
0884nobodyさん2005/06/02(木) 10:24:58ID:???
HTML埋め込みマクロのPHPをさらにテンプレート経由で使うなんてバカだろ
0885nobodyさん2005/06/02(木) 10:25:51ID:???
Smarty使っても結局Smartyの中では埋め込んでるだろ
0886nobodyさん2005/06/02(木) 10:26:37ID:???
売れ残った書籍の押し売り必死だな
0887nobodyさん2005/06/02(木) 11:42:44ID:???
Smartyの文法おぼえるのなんて、CSS、HTMLの知識があって、クロスブラウザ
かつValidなコーディングができる人なら訳ないよ。

ま、そんなデザイナーめったにいないわけだが。
0888nobodyさん2005/06/02(木) 12:20:07ID:???
結局ダメじゃんw
0889nobodyさん2005/06/02(木) 14:30:03ID:???
いっそのことincludeするHTMLファイルをどう書くのがベストなのか考えるスレ
0890nobodyさん2005/06/02(木) 15:33:35ID:???
ていうか、Smartyの構文覚える暇があるならPHPの構文覚えてもらった方が助かるわけで
0891nobodyさん2005/06/02(木) 15:35:03ID:???
>>889
mojavi見ろ
0892nobodyさん2005/06/02(木) 16:05:51ID:???
明確なメリット出てこないじゃねーか
なんてこった
今まで何となく新しそうだから使って来たが単なる変数埋め込みと大差ないなんて…
0893nobodyさん2005/06/02(木) 16:15:48ID:???
別途組み込み用作業料もらってプログラマが組み込めばOK。
0894nobodyさん2005/06/02(木) 16:17:07ID:???
メリット
>モデル内でいちいちappendとかassignとかしなくても変数がそのまま使える。
↑こういうのをやめさせることができる
0895nobodyさん2005/06/02(木) 16:23:24ID:???
フレームワーク的な考え方をすれば、
制限を設けさせることができるのがメリットといえばメリット。
単なるデザイナーとの連携という点ではメリットはないよ。
デザイナーとの連携なんかフルCSSデザインにして、テンプレート自体
いじる必要なくすのが一番手っ取り早いし
0896nobodyさん2005/06/02(木) 16:41:46ID:???
うん、切り分けをハッキリ出来るってことだろ
とはいえプレゼンテーションロジックも入って来るし
phpも書くことは出来る…
メリット薄っ
0897nobodyさん2005/06/02(木) 16:46:49ID:???
{php}タグは禁止できます。
Smartyの知識はないようですね。キャッシュとコンパイルの
区別も付いていない人も居るみたいですし。
0898nobodyさん2005/06/02(木) 16:55:48ID:???
ハイハイ。
0899nobodyさん2005/06/02(木) 17:03:48ID:???
それなら切り分け、取り回しの良さがメリットになるかな
あとサニタイズもやりやすい気はするなぁ
ただメリット群がモッサリした遅さと
トレードオフするかというと疑問符…やはり遅さがネックだな
0900nobodyさん2005/06/02(木) 17:10:19ID:???
急にSmarty使いの分が悪くなってきたので無理やり加勢するぞ。
Smartyにメリットが無いなんていってるやつは営業の事を全く考えていない。
何の特色も無いプログラムをアピールするのは至難だと言うことに気づけ!
「世界的に普及していて実績もあるMVCフレームワークのひとつであるSmartyは
LAMPとの相性も最高で、かつて無い抜群のパフォーマンスを発揮します」
てな調子で煽っておけばバカな客はよくわかんねーけどすごそうだと思い込むし
少しバカな客は書店などで冒頭の謳い文句だけ読んで最新技術なのか〜
なんて思い込むものさ。その結果ボったくっても文句言われにくくなるので
仕事も安定するし、収益も上がる。
ほんのわずかな実行速度や手間をケチったおかげで仕事が減っては本末転倒。
どうだ?使いたくなってきただろw
0901nobodyさん2005/06/02(木) 17:14:35ID:???
>>900
お前はデメリットを強調しにきたのか
0902nobodyさん2005/06/02(木) 17:16:49ID:???
ワラタ
0903nobodyさん2005/06/02(木) 17:31:57ID:???
営業の必要ないプロジェクトでも使ってますが。
0904nobodyさん2005/06/02(木) 17:37:35ID:???
アンチの結論はincludeを使えなのか?
0905nobodyさん2005/06/02(木) 17:40:11ID:???
まあPHPがHTMLに埋め込む形のプログラムだから、
Perlとかと比べるとメリット薄いといえば薄いが
必要ないって事も無いと思うけどな。
0906nobodyさん2005/06/02(木) 18:08:29ID:???
印象としては
「若干過大評価されている」気はするな、世間的に。スマーチィ。
0907nobodyさん2005/06/02(木) 19:31:36ID:???
なんとなくFlexy使ってるんだけど、Smartyと比べるとどうなんでしょ?
まだ、本格的に使ってるわけじゃないんで、アドヴァンテージがSmartyにあるなら、
乗り換えてみようかなぁ、とか思うんで。
0908nobodyさん2005/06/02(木) 19:38:15ID:???
素直にHTML_Template使えばいいのにね。
0909nobodyさん2005/06/02(木) 21:23:12ID:???
最大のメリットのキャッシュがイマイチだからなぁ…
mojaviデフォルトのテンプレートシステムにちょっと機能加えるくらいの方がいい
0910nobodyさん2005/06/02(木) 21:47:27ID:???
やっぱSmarty2だよな
0911nobodyさん2005/06/03(金) 00:57:34ID:???
やっぱ自作の連携方法で、、、
0912nobodyさん2005/06/03(金) 01:13:13ID:???
>>911
車輪の再発明には気をつけてね。
0913nobodyさん2005/06/03(金) 01:30:10ID:???
単純な構成だから多分大丈夫かと思われ
0914nobodyさん2005/06/03(金) 03:25:09ID:???
けんかはやめて
0915nobodyさん2005/06/03(金) 15:41:14ID:???
なんで車輪の再(ryがダメ?
0916nobodyさん2005/06/03(金) 20:29:17ID:???
>>915
作るなら勝手に作ればって感じだけど
お前が考え付くようなウンコな仕様はすでに誰かが作ってるよ。
無駄ってこと。
0917nobodyさん2005/06/03(金) 21:07:54ID:???
んなこと言ってたら永遠に進歩が無いけどな
0918nobodyさん2005/06/03(金) 22:13:55ID:???
>>917
逆じゃないか?
0919nobodyさん2005/06/03(金) 23:45:39ID:???
別にうんこでもいいんだよ
必要最小限の機能があって速ければね
viewなんてそんなに機能いらないだろ
0920nobodyさん2005/06/04(土) 01:23:57ID:???
>>918
全然逆じゃない。

>お前が考え付くようなウンコな仕様はすでに誰かが作ってるよ

なんて言ってるようじゃ進歩はしないね。
0921nobodyさん2005/06/04(土) 01:27:25ID:???
>920
なんで駄目なんだとか聞くうんこなら、ってことじゃねーの?
0922nobodyさん2005/06/04(土) 01:29:33ID:???
>>921
車輪の再開発が一概に駄目とは言えないのに
駄目と言い切ってる馬鹿がいるから聞いただけだろ
0923nobodyさん2005/06/04(土) 01:53:02ID:???
ほんとお前らうんこが好きなんだな
0924nobodyさん2005/06/04(土) 02:01:06ID:???
この会話自体が車輪の再発明な件について。
0925nobodyさん2005/06/04(土) 02:07:05ID:???
ウンコアンデナマットー
0926nobodyさん2005/06/04(土) 03:08:21ID:???
「どうしても車輪を再発明したいなら、少なくともマシな車輪を発明すべきである」
とかいう有難いお言葉をラクダ本で読んだ記憶がある

>>924
会話もフレームワーク化すると再利用しやすくなってウマー
0927nobodyさん2005/06/04(土) 05:13:25ID:???
Apacheの代替や新しいプログラム言語を作るってわけじゃないんだから、
ラジコンのタイヤ程度のものどんどん再発明すればいいじゃん
0928nobodyさん2005/06/04(土) 12:26:05ID:???
JavaのStringクラスを自作して遊んでいました。これは車輪眼ですか?
0929nobodyさん2005/06/04(土) 12:50:47ID:???
>>928
車輪眼じゃなくて写輪眼ね。
0930nobodyさん2005/06/04(土) 13:30:42ID:???
>>928
車輪だけど、車輪は作ることによって得ることも大きい。
使う方にとっちゃ、ちゃんとした車輪を選択するけどな。
0931nobodyさん2005/06/04(土) 15:31:37ID:???
いい加減スレ違い
0932nobodyさん2005/06/04(土) 17:54:24ID:???
Smartyのsectionって使い勝手悪くね?
ループはforeachがあるし、条件分岐はifがあるし
存在意義がよく分からん。
0933nobodyさん2005/06/04(土) 21:03:07ID:???
PHPAcceleratorとか使うともっさり感消えたりする?
0934nobodyさん2005/06/04(土) 21:37:08ID:???
>>932
おまいがsmarty使ってる理由がわからん
0935nobodyさん2005/06/04(土) 22:50:50ID:???
>>934
能書きたれる前にsectionの存在意義を教えろ。
0936nobodyさん2005/06/04(土) 23:17:10ID:???
>935
forの替わり
0937nobodyさん2005/06/04(土) 23:51:52ID:???
ぶっちゃけ私もsectionあんまり使ってない。
一通りマニュアル読んだけど、今のとこいまいち使いどころがない。
そのうち出てくるかも。
0938nobodyさん2005/06/05(日) 03:50:52ID:???
自分はsectionよく使うけど、
foreachの前にsectionを知ったからそのまま使ってるだけだしなぁ。
まぁ別にあって困るもんじゃないし、sectionでもforeachでも
好きなほうを使えばいいんじゃない?
0939nobodyさん2005/06/05(日) 13:00:58ID:???
こうゆう単純な構文が良いんだが。

[テンプレ側]
{loop name=hoge}
$name
$title
$comment
{/loop}

[PHP側]
foreach ($foo) {
$smarty->append("name" => "aaa", "title" => "bbb", "comment" => "ccc");
}
0940nobodyさん2005/06/05(日) 13:03:09ID:???
PHP部分間違えた。
こんな感じ。

[PHP側]
foreach ($foo) {
  $smarty->append(
    "hoge" => array(
      "name" => "aaa",
      "title" => "bbb",
      "comment" => "ccc"
    )
  );
}
0941nobodyさん2005/06/05(日) 13:06:31ID:???
テンプレ側も間違えた。
こんな感じ。

[テンプレ側]
{loop name=hoge}
名前:{$name}
タイトル:{$title}
コメント:{$comment}
{/loop}
0942nobodyさん2005/06/05(日) 17:03:58ID:???
>>939-941
Smarty以前の問題だよ、おめーわ
0943nobodyさん2005/06/05(日) 18:35:52ID:???
>>942
何が言いたい?
大好きなSmartyを貶されて切れたかガキ?
0944nobodyさん2005/06/05(日) 19:01:29ID:???
>>939
そういうテンプレートエンジンなら、他にたくさんありそうだからそれ使えばいいじゃない。
0945nobodyさん2005/06/05(日) 23:18:21ID:???
>>941
案外、それって使いにくいんだよな
PerlのHTML_TEMPLATEってそんな感じだった
0946nobodyさん2005/06/05(日) 23:53:09ID:???
>>943
おいおい、しっかりしろよ・・・
人のことをガキ呼ばわりする前にもう少し頭使おうぜ

> foreach ($foo) {
>   $smarty->append(
>     "hoge" => array(
>     "name" => "aaa",
>     "title" => "bbb",
>     "comment" => "ccc"
>     )
>   );
> }
0947nobodyさん2005/06/06(月) 22:42:10ID:???
>>946
いちいち細かい奴だな。
別に動くプログラムを組んでるわけじゃないんだから
雰囲気だけ分かりゃいいだろうが。
雑魚はこれだから。
0948nobodyさん2005/06/06(月) 23:00:55ID:???
プw 雑魚はこれだから。
0949nobodyさん2005/06/06(月) 23:54:30ID:???
おっと、>>939 逆切れか。

むちゃくちゃな構文で質問して、
まともな答えもらおうっていう方が甘ったれてんだよ。
百年ほど人生やり直してこい。
0950nobodyさん2005/06/07(火) 01:28:14ID:???
>>949
おいおい。勘違いしてもらっちゃ困るんだが。
お前らみたいなアホに質問なんかしねーってw
日本語すら理解できないような池沼からまともな答えなんて
期待してねーっつの。ちゃんとスレ読み直してみろよ。
日本語も分からないでプログラム言語か?
順序が違うんじゃねーのwww
0951nobodyさん2005/06/07(火) 01:58:41ID:???
なんでいきなり日本語の問題になってるわけ?
脳味噌まで自己中とは恐れ入ったな(プ
0952nobodyさん2005/06/07(火) 10:09:04ID:???
明らかにプログラミング言語なんかより日本語のほうが難しいだろ
0953nobodyさん2005/06/07(火) 10:14:08ID:???
ということは>939は絶望的ということですね
0954nobodyさん2005/06/07(火) 12:08:14ID:KvahcTPl
上にも書いてあったけど、デザイナにSmartyの構文覚えてもらうくらいなら、cssキッチリ理解してもらって
外部cssいじらせた方が良いと思うがなぁ。もちろんデザイン的に外部cssのみではどうにもならん場合も
あるだろうが、どうにかなる場合の方が多いだろうし。

論理構造を始めに決めときゃ、デザインもらってロジック埋め込むなんてせんでも同時に製作始められるし、
loopやifがもっとスッキリ書けてオーサリングツールと完全に連携できるテンプレートエンジンがありゃいいけど
テーブルの行の色やら列数をデザイン側で任意に変更させるのにデザイナに↓こんなんの説明とかしても
あんまり意味あると思えんしなぁ。

<table>
 <!--{section name=row loop=$LIST step=3}-->
 <tr>
  <!--{section name=col start=$smarty.section.row.index loop=$smarty.section.row.index+$smarty.section.row.step}-->
   <!--{if $LIST[col] != null}-->
  <td><!--{$LIST[col]}--></td>
   <!--{else}-->
  <td> </td>
   <!--{/if}-->
  <!--{/section}-->
 </tr>
 <!--{/section}-->
</table>
0955nobodyさん2005/06/07(火) 12:40:16ID:???
Smarty(HTML側)をある程度操作出るようになるなんて1日あれば十分だろ。
0956nobodyさん2005/06/07(火) 18:55:39ID:???
やる気があればな
0957nobodyさん2005/06/07(火) 21:49:38ID:???
外注デザイナに「これ覚えて!」とはなかなかいいにくい
0958nobodyさん2005/06/08(水) 00:40:41ID:???
Smarty使うデザイナの人ってどうやってHTML書いてるんだろう
ブラウザでプレビュー際にコードが表示されて邪魔にならないのかな
0959nobodyさん2005/06/08(水) 00:54:41ID:???
>>958
PHP直接埋め込むよりはマシかと。

<A HREF="<?php echo $aa ?>">aa</a>

みたいのだとぐちゃぐちゃになって目も当てられない。

でもSmartyって、制御構造とか入れると結局テンプレートも煩雑になるし、
コストも高いし、自由度は低いしで、俺は自前で{$form['aa']['bb']}みたいのを埋め込んだ
テンプレートを作ってevalで埋め込みしてるよ。

$output = file('テンプレートファイル名');
array_unshift($output, "print <<<EOTNJGTU\n");
array_push   ($output, "EOTNJGTU;\n");
eval(join("", $output));

こんな感じで。実際にはクラス化して結果をリファレンスでも取れるようにしたり、使いやすくしてる。

テンプレート中での制御構造は潔く諦めて、テーブルなんかはViewクラスで生成して
変数にぶちこんだものを上記の方法でテンプレートに埋め込んでる。
小規模開発ならこれで充分だと思う。
0960nobodyさん2005/06/08(水) 03:06:51ID:???
DWだとSmartyに対応しているもよう
0961nobodyさん2005/06/08(水) 05:13:08ID:???
そりゃ初耳
0962nobodyさん2005/06/08(水) 09:25:23ID:???
確かに、対応してるね。でもincludeが最強だぞ?
つhttp://www.contactlensesprice.com/smarty/
0963nobodyさん2005/06/08(水) 22:34:16ID:???
デザイナもSmartyなんて滅多に役に立たない構文覚えたくもないだろうしな。
逆にCSSなんかは今やYahooですら使ってる必須技術。
開発側もCSS自由自在にデザインできるテンプレートを作ってやれる程度には
ならんとな。
0964nobodyさん2005/06/08(水) 22:44:00ID:???
>>963
おまえプログラマか?
プログラマにとってはHTMLなんて簡単な言語だと思うが。
0965nobodyさん2005/06/09(木) 00:09:22ID:???
>>964
963じゃないけど、CSS != HTML
CSSは結構奥深いよ
DOMと組み合わせたりして、面白いことが色々出来る
ブラウザの対応がバラバラなのが痛いがなー
0966nobodyさん2005/06/09(木) 00:42:58ID:???
>>965
いや、俺はW3C信者だから。仕様書読むのが楽しい人だから・・・・・
0967nobodyさん2005/06/09(木) 01:33:29ID:???
Smartyの構文程度で覚えるの嫌ーなんてへこたれるデザイナーはチェンジ。
0968nobodyさん2005/06/09(木) 01:49:17ID:???
>>967
同意。
デザイナが覚えるべき構文なんてそれほど多くない。
それでだめならクビ。
0969nobodyさん2005/06/10(金) 21:13:44ID:???
>>968
あんたみたいな奴の下で働く奴はかわいそうだな。
0970nobodyさん2005/06/10(金) 21:16:50ID:???
会社はそんなに甘くないのよ
0971nobodyさん2005/06/10(金) 21:42:17ID:???
今時HTMLでデザインしてるデザイナーやプログラマこそチェンジだろw
0972nobodyさん2005/06/10(金) 21:59:54ID:???
まぁ仕事できない奴がクビになるのは当たり前だよな
0973nobodyさん2005/06/10(金) 22:02:05ID:???
探すのにもコストかかるんだよバカヤロー
そんなどうでもいいことで簡単に切れるか
0974nobodyさん2005/06/10(金) 22:17:14ID:???
>>964がなんであんな見当違いなレスをしたのかわからん
0975nobodyさん2005/06/10(金) 22:28:44ID:???
>>971
チェンジされた人
0976nobodyさん2005/06/10(金) 23:27:32ID:???
>>975
HTMLでデザインしてる人
0977nobodyさん2005/06/10(金) 23:44:10ID:???
>>976
Smartyの独自タグ覚えて優越感に浸ってる人
0978nobodyさん2005/06/11(土) 00:30:57ID:???
      ∧__∧ ll
     |(・)。(・)| ( )< バッドノウハウなんだね!
      |ヾ三ヲ└'ノ
    .|    l´
     つ ま り
0979nobodyさん2005/06/11(土) 00:36:32ID:???
まぁphpメインの中小webアプリ開発なんて、デザイナにsmartyバリバリ使いこなされたら
プログラマはSQL書いて結果を配列で渡すだけみてーな仕事増えそうだけどなー。
0980nobodyさん2005/06/11(土) 01:00:29ID:???
>>977
なんかもう言ってることがグダグダになってる人
0981nobodyさん2005/06/11(土) 01:03:19ID:???
>>980
反論のネタがなくなった人
0982nobodyさん2005/06/11(土) 05:26:53ID:???
>>982
とにかくセクースしたい人
0983nobodyさん2005/06/11(土) 11:24:44ID:???
>>981
>>977で話しがかみ合ってないことに気付いてない人
0984$default_modifiers、$debuggingの設定でparse error2005/06/11(土) 11:33:33ID:uAXJbuvY
$default_modifiers、$debuggingを設定して、テンプレートで{if empty($hoge)}を使うと
debug.tpl.phpがParse errorになるのですが、
最後に述べる解決方法でより良いものを知っている人が教えてください。
問題の発端は{$hoge}でParse errorになったのですが、そちらは解決できました。
(PHP 4.3.9とSmarty 2.6.9を使用
・hello.php
<?php
require_once("libs/Smarty.class.php");
$o_smarty=new Smarty();
$o_smarty->default_modifiers=array("upper");
$o_smarty->assign("hoge","abc");
$o_smarty->debugging=true;
$o_smarty->display("hello.tpl");
?>
・hello.tpl
<html><head><title></title></head><body>
{$hoge}</body></html>
・出力
ABC
Parse error: parse error, expecting `T_VARIABLE' or `'$'' in
(中略)templates_c(中略)debug.tpl.php on line 10
・debug.tpl.php 10行目
<?php if (isset ( ((is_array($_tmp=$this->_tpl_vars['_smarty_debug_output'])) ?
$this->_run_mod_handler('upper', true, $_tmp) : smarty_modifier_upper($_tmp)) ) && ((is_array($_tmp=$this->_tpl_vars['_smarty_debug_output'])) ? $this->_run_mod_handler('upper', true, $_tmp) : smarty_modifier_upper($_tmp)) == 'html'): ?>
・解決方法
core.display_debug_console.phpを修正
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=5179&highlight=expecting+tvariable
件の解決策は以下を考えました。
・if empty($hoge|smarty:nodefaults)と書いてParse errorを避ける。
・またはデバッグの時は、default_modifiersをコメントにする。
根本的な解決策はSmarty側のどこかのソースを修正しなければならないのでしょうか?
(できればhello.tpl、phpは修正したくないです。)
レス数が950を超えています。1000を超えると書き込みができなくなります。