【Smarty】PHPのテンプレートエンジン【Flexy】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2005/06/15(水) 10:35:52ID:???PHPのテンプレートエンジンを語るスレです。
Smarty:本家(英語)
http://smarty.php.net/
Smarty:日本語マニュアルとか
http://sunset.freespace.jp/smarty/
pear の HTML_Template たち
http://pear.php.net/package/HTML_Template_Flexy
http://pear.php.net/package/HTML_Template_IT
http://pear.php.net/package/HTML_Template_Sigma
http://pear.php.net/package/HTML_Template_Xipe
http://pear.php.net/package/HTML_Template_PHPLIB
patTemplate
http://www.php-tools.de/
http://www.php-j.com/tutorial/php/template.php
前スレ(現在dat落ち)【PHP】Smarty【Template】
http://pc8.2ch.net/test/read.cgi/php/1047225437/
0003nobodyさん
2005/06/15(水) 20:42:41ID:???0004前スレ984
2005/06/15(水) 22:16:41ID:???前スレッドの質問なんですが分かる人がいましたら、よろしくお願いします。
0005nobodyさん
2005/06/16(木) 01:43:00ID:???0006nobodyさん
2005/06/20(月) 19:46:15ID:???0007nobodyさん
2005/06/23(木) 10:42:54ID:???fileとbasedirをちゃんと設定してみてください。
0008nobodyさん
2005/06/24(金) 23:10:25ID:pYTM6kF20009nobodyさん
2005/06/24(金) 23:26:06ID:???この辺に書いてあるかな。
ttp://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions#other-1
0010nobodyさん
2005/06/25(土) 00:10:27ID:???ということは、例えば掲示板を作ったとして
書き込むのにお金を取るみたいなことも可能ですか?
0011nobodyさん
2005/06/25(土) 01:08:43ID:???モジュール毎か?
0013nobodyさん
2005/06/26(日) 06:20:15ID:???0015nobodyさん
2005/06/26(日) 11:39:53ID:???0016nobodyさん
2005/06/26(日) 13:16:50ID:???スマーチィで実現させる場合、
capture関数を使うみたいだけど、
スマーチィ内で使用する変数名が、各テンプレートでバッティングしないように
気を遣わなくちゃいけないよね?
なんか面倒くない?
0017nobodyさん
2005/06/26(日) 13:17:48ID:???だった
0018nobodyさん
2005/06/26(日) 13:19:16ID:???何だこれ使えばいいじゃん
馬鹿だ俺テヘヘ
ウヘラウヘラ
001913
2005/06/26(日) 13:20:03ID:???よろしくメカドック
0021nobodyさん
2005/06/26(日) 22:56:02ID:???0023nobodyさん
2005/06/27(月) 03:54:06ID:???0024nobodyさん
2005/06/27(月) 08:51:48ID:???0025nobodyさん
2005/06/29(水) 02:14:48ID:???両方使ったことある人どっちがおすすめですか?
0026nobodyさん
2005/06/29(水) 03:53:03ID:???0027nobodyさん
2005/07/07(木) 11:54:00ID:???0028nobodyさん
2005/07/07(木) 14:53:10ID:???関係ないけどSmarty他のファイルベースのキャッシュってどうなんだろ?
UNIXって同じディレクトリにファイルが何千もあると遅くなるって
聞いたことがあるし
inode使いまくりだから抵抗がある。
特にコンテンツ構成が変わる動的生成のページだったらキャッシュが山ほど増えそうだし。
SQLiteでやればいいんじゃないかなぁと思ってるんだけど。
DBクラス等でSQLiteをキャッシュに使ってる人いない?
0029nobodyさん
2005/07/07(木) 15:27:32ID:???inodeの実装によるような。
ディレクトリを線的探索する場合はファイル数に比例して
パフォーマンスは落ちるだろうけど、数千程度で実感する
パフォーマンスの低下は起きないんでないかな?
10年程前のLinuxのカーネルは確か1つのディレクトリに確保できる
ファイル数が限られるという制約があったと思うけど今はそんなこと
ないはずだし。
> SQLiteでやればいいんじゃないかなぁと思ってるんだけど。
それは本末転倒ではないか?素直にディレクトリ走査した方が早い気がする。
0030nobodyさん
2005/07/07(木) 15:39:47ID:???0031nobodyさん
2005/07/07(木) 16:17:13ID:???1テンプレート1キャッシュだし
0033nobodyさん
2005/07/08(金) 05:03:05ID:???一体どこらへんが?
0034nobodyさん
2005/07/08(金) 07:08:49ID:???ここらへん。
0036nobodyさん
2005/07/08(金) 10:38:17ID:???パラメータでキャッシュID振るんでしょ?そんときキャッシュディレクトリも
分けちゃえばいいんじゃないの?
0037nobodyさん
2005/07/10(日) 09:56:24ID:???この書き方でsyntaxエラーが出てしまったんですが、クラス変数を使って配列から取得したいんですが
書き方間違ってたら教えてください。
ちなみに、{$array.$obj->name}でも{$array[$obj]->name} こう変換されてしまってだめでした。
0038nobodyさん
2005/07/10(日) 12:55:05ID:???{$assing var=obj_name value=$obj->name}
{$array.obj_name}
0041nobodyさん
2005/07/15(金) 08:38:00ID:UMRZ8BPd0042nobodyさん
2005/07/15(金) 08:56:51ID:???0043nobodyさん
2005/07/15(金) 09:42:30ID:sLsGcdbzSMARTYの特定のテンプレートから外部サイトへリダイレクトさせるにはどうしたらいいでしょうか?
{PHP〜でLocationヘッダ出力してもダメでした。
0044nobodyさん
2005/07/15(金) 10:10:54ID:???html: <meta http-equiv="Refresh" content="10;URL=http://www.yahoo.com/">
smarty: {if $redirect}<meta http-equiv="Refresh" content="{$redirect.sec};URL={$redirect.url}">{/if}
0046nobodyさん
2005/07/15(金) 12:11:54ID:???004743
2005/07/15(金) 15:13:39ID:sLsGcdbzおお!なるほど!ありがとう!
0049nobodyさん
2005/07/30(土) 18:10:02ID:???0050nobodyさん
2005/07/31(日) 23:47:56ID:???0051nobodyさん
2005/08/03(水) 04:47:15ID:???0052nobodyさん
2005/08/07(日) 00:22:54ID:???Smartyでググると二番目に出てくるこのサイト激しくウザい
広告だらけでほとんどが他人のサイトへのリンク
何でこんな糞サイトが上位に来るんだよ
0053nobodyさん
2005/08/07(日) 00:36:09ID:???0055nobodyさん
2005/08/07(日) 15:17:30ID:???http://manage.nekosuke.net/cms.php?mode=menu
0057nobodyさん
2005/08/17(水) 04:04:43ID:zG9hS4+hどうやって参照できるの?
$assoc.$key
って適当にやったらエラーになった
教えてクリクリ
005857
2005/08/17(水) 04:06:40ID:???なんでさっきエラーになったんだろ
すまんこ
005957
2005/08/17(水) 04:12:54ID:???エラーにならないだけだ
どうしたらいいの?
0060nobodyさん
2005/08/17(水) 04:17:51ID:???http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2005-32,GGLG:ja&q=%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97+php
006157
2005/08/17(水) 04:23:31ID:???マニュアルにも載ってないところを見ると無理ぽ?
0063nobodyさん
2005/08/17(水) 18:30:38ID:???$assoc.$key => $assoc.key
マニュアルに載ってルゾルゾ
0064nobodyさん
2005/08/17(水) 19:33:53ID:???試してみたら$assoc.$keyでも$assoc[$key]でもOKだったんだが、
$keyにassignしてないとかいうオチじゃないよね?
>>63
Smartyで連想配列のキーを変数でアクセスしたいってことだと思う
0065nobodyさん
2005/08/17(水) 20:58:18ID:???$moe = array('a','b');
こんな感じので、
{foreach form=$moe item=i}{$hoge.$i}{/foreach}
こういう感じでしょ?
$iが$i.1とかだと{$hoge[$i.1]}にしないとだめなんだっけか。
0066nobodyさん
2005/08/18(木) 10:13:17ID:k8qTuvh+ほとんどそのままリプレースできんの?
使ってる人いる?
0067nobodyさん
2005/08/19(金) 11:32:37ID:???Smartyの $smarty->fetch() を使って整形した文字列を取得するスクリプトを組もうとしてるんですけど
Linuxのコンソール上で php ./test.php としてスクリプトを実行した時には問題なく動作するんですが
メールからパイプで呼び出すと
Warning: Smarty error: unable to read resource: "test.tpl"
となってしまい fetch でテンプレートをコンパイルしてくれません。
パイプからだと実行位置が違うか template_dir へのパスがうまく通ってないのかな?
と思って テンプレート指定の部分を
$smarty->fetch("file:/path/to/test.tpl");
とフルパスを与えて試したんですけど同じ結果になってしまいます。
テンプレートファイルのアクセス権も 777 にしてるのですがだめぽです。
テンプレート内のfetch関数は、セキュリティが有効な場合は$secure_dirにあるファイルしか読めないみたいなのですが
$smarty-fetch() でも何か同じような制限があるんでしょうか?
0068nobodyさん
2005/08/19(金) 11:49:29ID:???0069nobodyさん
2005/08/20(土) 00:26:52ID:CuJMKX6qその部分だけ、キャッシュを無効とかにできますのでしょうか。。
0070nobodyさん
2005/08/21(日) 10:04:09ID:???0071nobodyさん
2005/08/21(日) 13:35:48ID:???0073nobodyさん
2005/08/30(火) 02:00:43ID:Z/2p1wcU読み込み元PHPを基準?と考えて作る必要があるのでしょうか?
例えば、
/usr/local/apache2/htdocs/index.php
が
/usr/local/apache2/htdocs/templates/index.html
を読み込んで、
/usr/local/apache2/htdocs/templates/img/
中にindex.htmlで使う画像がある場合は、、、
…ドキュメントルート以下からのフルパスで全て指定するようにすれば、無問題なのかな?
どうでしょうか?
書いてる途中で気付いた、、、orz
0074nobodyさん
2005/08/30(火) 02:21:04ID:???HTMLで使う画像のパスはURIなわけで。
アクセスされたURIから見た(絶対|相対)URIになるわけだな。
0075SmartySmile
2005/09/01(木) 09:52:14ID:x5rzeuMlframexxx.tplで<frame src=xxx.tpl>みたいに指定して、
xxx.tplに<td>{$item}</td>みたいな感じで書いておいて、$itemに値をセットしてから
display(framexxx.tpl)って表示させると、
{$item}の部分がそのまま{$item}って表示されちゃいます。
srcで指定したtplの中までは解析してくれないのかな?
いい方法ないでしょうか?
0077nobodyさん
2005/09/06(火) 06:17:37ID:???ピュアPHPだとどうしても速度的にネックになりやすい部分だったDBの抽象レイヤやO/Rマッピングも
PDOが標準モジュールになったり、DB_DataObjectがPECL入りしたりしてるから、
テンプレートエンジンもモジュール化されて高速に(できれば標準に)なると嬉しいんだけど。
いくらHTML埋め込みが特徴だからって<?=を使うわけにもいかないし・・・
0078nobodyさん
2005/09/06(火) 08:45:22ID:???結局、<?=...なテンプレートをincludeする形に落ち着いたんだけど、
>>77
> いくらHTML埋め込みが特徴だからって<?=を使うわけにもいかないし・・・
なんでなんでー
0079nobodyさん
2005/09/06(火) 08:53:27ID:???0080nobodyさん
2005/09/07(水) 05:01:04ID:???short_open_tagをOnにしないと使えないから。
可搬性を考えるとOn前提のコーディングは出来ないからね
0082nobodyさん
2005/09/07(水) 10:02:52ID:???<?php echo ...
これで可搬性も担保できるお。
タイプ量が増えるからいや?
読みにくくなるいや?
0083nobodyさん
2005/09/08(木) 16:58:41ID:???>DB_DataObjectがPECL入りしたりしてるから、
ソース( ゚д゚)クレ
DBDOのこといってるの?
0084nobodyさん
2005/09/08(木) 22:21:24ID:???うん、DBDOのこと
中の人はFlexyの人でもあるから、テンプレートのPECL入りもありうるかなぁと思ったり
0085nobodyさん
2005/09/09(金) 01:36:30ID:???0086nobodyさん
2005/09/09(金) 22:03:07ID:???「それぞれの $template_dir のために別々の compile_id をセットしなければ、
同名のテンプレートはお互いに上書きされてしまいます。」
DocRoot/templates_c/
DocRoot/templates/index.tpl
DocRoot/templates/hoge/index.tpl
DocRoot/templates/hoge/piyo/index.tpl
DocRoot/index.php -> $smarty->display(DocRoot/templates/index.tpl);
DocRoot/hoge/index.php −> $smarty->display(DocRoot/templates/hoge/index.tpl);
DocRoot/hoge/piyo/index.php −> $smarty->display(DocRoot/templates/hoge/piyo/index.tpl);
2.6.1なんですが、これってやっぱり各々のindex.phpでcompile_idセットしないといけないですか?
実際"%%C5^C5B^D5GFCD64%%index.tpl.php"とか接頭語で別ファイルになってるけど。。。
0087名無しさん@そうだ選挙に行こう
2005/09/11(日) 01:16:03ID:???その接頭語はdisplay()に渡されたパス全体のCRC。あなたのやり方ならまあ大丈夫でしょう。
DocRoot/index.php
$smarty->template_dir='DocRoot/templates';
$smarty->display('index.tpl');
DocRoot/hoge/index.php
$smarty->template_dir='DocRoot/templates/hoge';
$smarty->display('index.tpl');
こういう使い方はまずい。
0088名無しさん@そうだ選挙に行こう
2005/09/11(日) 02:17:11ID:???ありがとうございます。なるほどCRCだったんですね。
って事はまずバッティングする事は無いですね、0%では無いけど(笑)
どうやら続きができそうです(^^)
0089nobodyさん
2005/09/13(火) 00:11:30ID:+9gUXOxC$smarty->template_dir='DocRoot/templates';
$smarty->compile_dir ='DocRoot/compdir/hoge';
$smarty->display('index.tpl');
DocRoot/hoge/index.php
$smarty->template_dir='DocRoot/templates/hoge';
$smarty->compile_dir ='DocRoot/compdir/fuga';
$smarty->display('index.tpl');
こういう使い方はどう?
0090nobodyさん
2005/09/13(火) 03:26:48ID:???「1つ以上の $template_dir を持っているが $compile_dir が1つしかない場合です」
に該当しないから普通に大丈夫だと思われ。
DocRoot/index.php
$smarty->template_dir='DocRoot/templates';
$smarty->compile_dir ='DocRoot/compdir';
$smarty->display('index.tpl');
DocRoot/hoge/index.php
$smarty->template_dir='DocRoot/templates/hoge';
$smarty->compile_dir ='DocRoot/compdir/hoge';
$smarty->display('index.tpl');
俺ならこっちの方が管理しやすケド
0091nobodyさん
2005/09/15(木) 05:08:57ID:4GZtFUq5http://search.yahoo.co.jp/bin/query?p=phptal+%C2%B0%C0%AD
0092nobodyさん
2005/09/16(金) 01:40:10ID:???ものすごい勢いで使われて「いません」よ。つかリザルトに国産のが引っかかってんね
ttp://phpoot.sourceforge.jp/
ttp://aloha.s151.xrea.com/studyphp/huel/
象嵌に植える?派生か知らんがどっちも無名だなプ。ベンチとか使用者のレポきぼん
0094nobodyさん
2005/09/22(木) 15:28:15ID:7V8YpZLH今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ age
(・∀・∩)(∩・∀・) age
(つ 丿 ( ⊂) age
( ヽノ ヽ/ ) age
し(_) (_)J
0095nobodyさん
2005/09/26(月) 16:31:10ID:/MkqbBhFconfig_loadで読み込むことはできない?
0096nobodyさん
2005/09/27(火) 22:45:48ID:G3cqNu07学もなく、技術もなかった母は、
個人商店の手伝いみたいな仕事で生計を立てていた。
それでも当時住んでいた土地は、まだ人情が残っていたので、
何とか母子二人で質素に暮らしていけた。
娯楽をする余裕なんてなく、日曜日は母の手作りの弁当を持って、
近所の河原とかに遊びに行っていた。
給料をもらった次の日曜日には、クリームパンとコーラを買ってくれた。
ある日、母が勤め先から愛・地球博のチケットを2枚もらってきた。
俺は生まれて初めての万博に興奮し、
母はいつもより少しだけ豪華な弁当を作ってくれた。
愛・地球博の会場に着き、チケットを見せて入ろうとすると、係員に止められた。
母がもらったのは割引券で、これでは入場できないと言われた。
帰りの電車賃くらいしか持っていなかった俺たちは、会場の周辺を夕方まで散歩した。
電車の中で無言の母に「楽しかったよ」と言ったら、
うつむいた母は「母ちゃん、入場チケットだと思った。バカでごめんね」と言って
少し涙をこぼした。
俺は母につらい思いをさせた貧乏と無学がとことん嫌になって、
一生懸命に勉強した。
親元を離れて新聞奨学生として大学まで進み、
いっぱしの社会人になり毎月少しばかりの仕送りもできた。
結婚もして、孫を見せてやることもできた。
そんな母が去年の暮れに病気で亡くなった。
死ぬ前に一度だけ目を覚まし、うわごとのように「愛・地球博、ごめんね」と言った。
俺は「楽しかったよ」と言おうとしたが、最後まで声にならなかった。
0097nobodyさん
2005/09/28(水) 20:14:28ID:???万博にしたら泣けたのにな。
こないだ終わったばっかじゃん。
0098nobodyさん
2005/09/28(水) 21:48:47ID:???0099nobodyさん
2005/09/30(金) 03:18:14ID:+J65W0vg字下げしたら、それがHTMLにも出力されるし、
字下げしにくいと見にくい。どうしたものか…
0100nobodyさん
2005/09/30(金) 10:10:28ID:???かまわずタブで字下げしてるけど
気になるなら
一度文字列として取得したあとに
タブを除去して出力するとか
メールのテンプレートにもsmartyを使ってるけど
メールの場合はダイレクトに反映されてしまうのでそうしてるよ
0102nobodyさん
2005/09/30(金) 11:42:18ID:???0103nobodyさん
2005/09/30(金) 11:43:06ID:???0104nobodyさん
2005/10/03(月) 08:22:20ID:???昔はソースも綺麗じゃないと!と思ってやってたけど、めんどくさくなって来た。
ただ、CSSで「display:inline」使ったりとか、インデントは入るとレンダリングされた時にも余計なスペースも入るような場合だけ気にしてる。
010599
2005/10/03(月) 12:46:20ID:???俺も気にしないで字下げすることにしたよ。
ソースのキレイさなんてたいした意味ないもんな。
0106nobodyさん
2005/10/07(金) 00:51:44ID:OUR64i5+テンプレート中で定義するにはどうすればいいの?
0107nobodyさん
2005/10/07(金) 07:51:59ID:j2nZGy0l参照方法によるんじゃない
0108nobodyさん
2005/10/07(金) 12:19:03ID:???0109nobodyさん
2005/10/14(金) 04:03:34ID:IJV8gZEDヽ(・∀ ・)ノ <TALをつかいなよー!
(( ノ( )ヽ ))
< >
0110nobodyさん
2005/10/27(木) 19:57:17ID:Q3CXlK3DPEARのPagerとか、Pager_Slidingを使うと良いのでしょうか?
ttp://www.go-pear.org/manual/ja/package.html.pager.intro.php
ttp://www.go-pear.org/manual/ja/package.html.pager-sliding.intro.php
SmartyでPEARを使う方法がよくわかりません。
0111nobodyさん
2005/11/02(水) 05:16:03ID:???動作変わるんだね
分かりにくいわBOKE(><)
0113nobodyさん
2005/11/12(土) 03:12:11ID:???よく考えたらクラスのStatic変数をネームスペースとして使えるじゃん。
糞重いSmartyなんていらねーよバキャロコノヤロ
0114nobodyさん
2005/11/12(土) 03:19:27ID:???0115nobodyさん
2005/11/12(土) 07:19:38ID:???グローバル空間汚れないじゃん。
今まで何だったんだバキャロコノヤロ
0116nobodyさん
2005/11/14(月) 12:15:20ID:???if-endif
foreach-endforeach
なんて書き方があったんだとはじめて知った。
PHP自体がテンプレート的存在として生まれているのに、
テンプレートエンジンなど必要だろうか。
否、いらない。
0117nobodyさん
2005/11/14(月) 12:24:14ID:???例えば、次のような感じで表示に使うテンプレートを切り替えられれば便利じゃね?
if($status){
setTemplate('success.html'); // 成功時のテンプレートファイル
}else{
setTemplate('error.html'); // 失敗時のテンプレートファイル
}
0119nobodyさん
2005/11/14(月) 13:05:00ID:???0120nobodyさん
2005/11/15(火) 10:25:55ID:???0121nobodyさん
2005/11/15(火) 10:51:49ID:???予防的防衛というか
テンプレエンジン要らないOOP要らないコンテナ要らないSOAP要らない
Struts要らないモデリングツール要らないデザパタは無駄・・・etc
個人的に以下の二点かなあとか思った
これを満たす新技術には「どこがいいんだよ馬鹿」厨が発生するような
・誰にでも利用価値があるわけじゃないもの
・学習コストのかかるもの
0122nobodyさん
2005/11/15(火) 11:14:20ID:???これ大事。
だが今必要なのはAjaxPagesではないか
0123nobodyさん
2005/11/15(火) 11:54:09ID:???Smarty の html_select_time で各 select リスト同士を区切る文字を指定したいのですが、
html_select_date の field_separator のようなものが発見できません。
なので時間の場合、00:00:00のような表示ができないのですが、
皆様はどのようにされていますか?教えてください。
0124nobodyさん
2005/11/15(火) 12:46:47ID:???プラグイン実装なんだから好きに変えれ。
0125123
2005/11/15(火) 14:05:51ID:???そうですよね。
やっぱ自分で実装するしかないみたいですね。
ソース見たら簡単にできたので、自分で実装しました。
ありがとうございました。
0126nobodyさん
2005/11/17(木) 06:59:13ID:bEealcPT0127nobodyさん
2005/11/17(木) 10:52:46ID:???例えば
<input type="text" name="foo" value="hoge">
を表現するElementをfreezeすると、レンダリング結果は
hoge
になる。
ただしdepreciatedなメソッドだし、
Elementの種類によってはうまく動かない。
(マニュアルにも「this probably needs more thought..」とある)
要するに、使わない方が良いし気にしなくても良い。
0128nobodyさん
2005/11/17(木) 11:02:53ID:bEealcPTありがとうございます。
しかし、どういう用途に使うのか、よくわかりませんね・・
0129nobodyさん
2005/11/17(木) 14:18:08ID:???入力フォームの確認画面とかに使う
HTML_QuickFormにも同様のメソッドがあるよ
でもフォームであれこれしたいならFlexyで全部やるよりQFに任せたほうがいいと思う
0130nobodyさん
2005/11/17(木) 15:00:34ID:bEealcPTそかそか、なるほどー
QFの方は、使ったことあります。でもちょっと微妙〜な感じでした。
FlexyよりQFがいいと言われると、うーん、となりますねぇ。
0131nobodyさん
2005/11/17(木) 18:42:41ID:Z3PKuVv1ありますか?
0132nobodyさん
2005/11/17(木) 20:33:18ID:???0133nobodyさん
2005/11/18(金) 07:15:31ID:???HTMLの中に<? ?>を入れるのとどう違うのかがいまいち理解できない。
0134nobodyさん
2005/11/18(金) 07:21:59ID:???PHPで巨大なプログラムを書く是非については論じない。
0135nobodyさん
2005/11/18(金) 15:05:35ID:???>>133
配布してるスクリプトならshort_open_tagはOffでお願いします(;´Д`)人
0136nobodyさん
2005/11/19(土) 18:43:18ID:ZxbspkY2ほとんど使われていないのはどうして?
0137nobodyさん
2005/11/19(土) 18:57:11ID:ZxbspkY2http://capsctrl.que.jp/kdmsnr/wiki/bliki/?MovingAwayFromXslt
ここ読んだら、ちょっとわかった気がした・・
しかし、Rubyは海外での評価が上がってるなぁ。
0138nobodyさん
2005/11/19(土) 19:02:01ID:ZxbspkY20141nobodyさん
2005/11/24(木) 01:51:46ID:???0142nobodyさん
2005/11/24(木) 04:04:23ID:???スレ違い。今日は気分がいいから誘導。
【PHP】フレームワークについて語るスレ【総合】
http://pc8.2ch.net/test/read.cgi/php/1123608068/
0145nobodyさん
2005/11/25(金) 18:34:56ID:jDxpSmO4これ定説。
よって、Smartyの勝ち。
0146nobodyさん
2005/11/27(日) 14:44:01ID:???Flexy も日本人でがんばる人が出てくれば。
0147nobodyさん
2005/11/27(日) 14:48:26ID:???maple関連のエロイ人も使ってるのかな?Flexy。
ちょろっとマニュアル見たけど、良さそうだよね。
Smartyと違って、PEARコマンドでインストール、アップグレード
出来るの便利だし。
0148nobodyさん
2005/11/27(日) 19:31:54ID:???一応 Smarty も PEAR コマンドで管理できますよ。(Pearified: http://pearified.com/)
0150149
2005/11/27(日) 22:21:40ID:???Viewの部分、SmartyとFlexy両方使えるようにしようと思ってる。
やっぱこの二つが今HOTかなぁと思うし。Smartyは前からだけど。
0151nobodyさん
2005/12/02(金) 18:48:49ID:GbypoETyappend()関数みたいなのがあればいいのになー
{assign var="foo[bar]" value="hoge"}
{assign var="foo.bar" value="hoge"}
どっちもダメ
0152nobodyさん
2005/12/02(金) 18:52:18ID:???0153nobodyさん
2005/12/02(金) 19:10:32ID:GbypoETy0154nobodyさん
2005/12/02(金) 20:49:36ID:???compiler.assign.php 見たらびっくりするぐらい簡単。
適当にいじってcompiler.append.php とかってすれば?
0155151
2005/12/04(日) 14:03:53ID:Mar0sa+Pありがとうございました。
実体はreturn行だけなんですね。
assignをappendに置換したらそのまま。
わかってみればびっくりするぐらい簡単でした。
0156nobodyさん
2005/12/04(日) 16:57:43ID:Lg1lZNcA双方単体では使えるのですが、
<?php
require_once("/var/www/common/xxxx/MySmarty.class.php"); //smarty本についてたファイル
require_once("jpgraph-2/src/jpgraph.php");
require_once("jpgraph-2/src/jpgraph_radar.php");
echo "testdayo";
?>
という、実処理なしのスクリプト(EUC-JP)でもエラーが出てしまいます。
JpGraph Error
General PHP error : var : Deprecated. Please use the
public/private/protected modifiers
環境は、
fedora core 4
Apache/2.0.54 (Fedora)
PHP Version 5.0.4
JpGraph2.0rc2/1.19 ※両方でテストしてみた。双方単体では動く。
λ...タスケテ
0157nobodyさん
2005/12/04(日) 16:59:53ID:???0158156
2005/12/04(日) 17:05:43ID:Lg1lZNcAMySmarty.class.phpが悪かったみたい(?)。
Smarty.class.phpにしたらエラーでなかったです。
もちょっと頑張ってみます。
0159nobodyさん
2005/12/05(月) 03:30:22ID:???Flexy,Regex,Standardありますが、どのような違いがあるのでしょうか。
0160nobodyさん
2005/12/09(金) 00:22:02ID:???サイト構築に、mod_rewriteを使ってルートのPHPにパスを渡して
それぞれのページを表示させているのですが、
PHPのテンプレートエンジンの中に、各ページのHTMLファイルに
PHPスクリプトを書いたときに適用させられるようなエンジンはないでしょうか?
鮎川さんのテンプレートクラスを使ってみたのですができませんでした。
わかりにくいですね…
・mod_rewrite
(RewriteRule ^(([0-9A-Za-z\-\_\/]+)\.html)$ default.php?file=$1 [L])
・default.php?file=test/index.html (ルートのPHP)
・main.html (ページ全体のHTML テンプレートタグを使って書いてある)
・test/index.html (default.phpが呼び出しているファイル)
↑このなかに<?php ほにゃらら ?> のPHPスクリプトを書いて実行させたい
(´・ω・`)わかりますでしょうか… よろしくお願い致しますm(_ _)m
0161nobodyさん
2005/12/09(金) 00:22:35ID:8G0pq1Vaサイト構築に、mod_rewriteを使ってルートのPHPにパスを渡して
それぞれのページを表示させているのですが、
PHPのテンプレートエンジンの中に、各ページのHTMLファイルに
PHPスクリプトを書いたときに適用させられるようなエンジンはないでしょうか?
鮎川さんのテンプレートクラスを使ってみたのですができませんでした。
わかりにくいですね…
・mod_rewrite
(RewriteRule ^(([0-9A-Za-z\-\_\/]+)\.html)$ default.php?file=$1 [L])
・default.php?file=test/index.html (ルートのPHP)
・main.html (ページ全体のHTML テンプレートタグを使って書いてある)
・test/index.html (default.phpが呼び出しているファイル)
↑このなかに<?php ほにゃらら ?> のPHPスクリプトを書いて実行させたい
(´・ω・`)わかりますでしょうか… よろしくお願い致しますm(_ _)m
0162nobodyさん
2005/12/09(金) 00:23:13ID:8G0pq1Va0163nobodyさん
2005/12/09(金) 00:35:41ID:???Smartyの{php}があるが、そういうのはコントローラで処理して
テンプレートには結果だけ渡すのが普通じゃないかな
0164nobodyさん
2005/12/09(金) 02:20:36ID:8G0pq1Va感謝です。
これを機にsmarty入門いたします。
0165nobodyさん
2005/12/09(金) 12:25:36ID:???0166163
2005/12/09(金) 17:51:16ID:???「テンプレート内」じゃなく、「テンプレートに埋め込む文章内」の
PHPを適用させたいのです。
無理でしょうか?なにか代替案があれば教えてくださいm(_ _)m
0167nobodyさん
2005/12/09(金) 18:11:55ID:???パカじゃねーの?
0168nobodyさん
2005/12/09(金) 18:23:01ID:???すごい勘違いしてたようです。
なかったことに
0169nobodyさん
2005/12/13(火) 00:37:27ID:+LOMjCdo別々にすることはできますか?
0170nobodyさん
2005/12/13(火) 01:08:06ID:???間に変換するフィルタを噛ましてやれば可能。
半素人なデザイナーとか、どうしてもSJISじゃないと
と言い張ったりするから。
0171nobodyさん
2005/12/13(火) 02:18:33ID:???0172nobodyさん
2005/12/14(水) 21:38:32ID:???0173nobodyさん
2005/12/14(水) 21:53:11ID:???0174nobodyさん
2005/12/15(木) 00:54:10ID:Ehe3PQsAsmartyじゃ駄目なの?
0175nobodyさん
2005/12/15(木) 12:08:28ID:???探せばあるよ、ガソバレ!
0176nobodyさん
2005/12/17(土) 20:01:40ID:???0177nobodyさん
2005/12/18(日) 10:40:41ID:???0178nobodyさん
2005/12/18(日) 11:43:26ID:???0179nobodyさん
2005/12/18(日) 12:06:49ID:???0180nobodyさん
2005/12/18(日) 15:38:25ID:???step=$var*2+1
等の式を指定したら変になる。
そのくらいうまいこと処理しろや!BOKENASU!
0181nobodyさん
2005/12/18(日) 21:51:49ID:???マジレスしとくと、
そんなことしなければ実現できない設計をした誰かが悪い。
テンプレートエンジンの第一目的は HTML とプログラムの分離なんだから。
綺麗に分離できる設計&プログラミングが要求される、と思う。
ツールを使いこなすには技術がいる。
0182nobodyさん
2005/12/19(月) 03:51:38ID:???10万以上のファイル書き出ししてます)が激しく思くなって
きていて、PHPオーバヘッドになっているのは確認したので、
何らかの対処をしようと思っています。
で、一度eAcceleratorとかと組み合わせて使ってみようかなぁと
思っているのですが、Smarty+eAcceleratorで動かしている方
いますか?
0183nobodyさん
2005/12/19(月) 11:13:10ID:dKcxa4c0確かに、HTMLファイルの上で演算なんかするべきじゃないな。
PHPで全て処理するのが理想だ。
とはいえ、繰り返しなどの処理は{foreach}などに頼るしかなくその上でプログラミングに
近いことをしないといけないのは仕方ないと思う。
そこで質問なんですが、smartyの連想配列の添字に変数を使えませんか?
PHPでいうところの $hoge[$fuga] に相当するような書き方が見当たりません・・・
0184nobodyさん
2005/12/19(月) 11:56:48ID:???0185nobodyさん
2005/12/19(月) 16:17:41ID:???qmailスレとかでコンサル雇え、って煽り見て馬鹿だ、って思ってたけど気持ちがわかってきた。
0186nobodyさん
2005/12/20(火) 13:47:21ID:???0187nobodyさん
2005/12/20(火) 20:46:34ID:???0188nobodyさん
2005/12/21(水) 01:05:51ID:???努力もせず、金も出さずでは答えは得られない罠。
0189nobodyさん
2005/12/21(水) 01:25:16ID:???0190nobodyさん
2005/12/21(水) 15:14:44ID:hWyv/SEQ何を今更・・・
0191nobodyさん
2005/12/21(水) 22:11:38ID:???こういうのもdjb信者というのだろうか。
0193nobodyさん
2005/12/22(木) 13:40:11ID:???愚弄しないでください。
0194nobodyさん
2005/12/23(金) 12:57:07ID:???⊂⌒( ・ω・) はいはい信者信者
`ヽ_っ⌒/⌒c
⌒ ⌒
0196nobodyさん
2005/12/23(金) 18:03:23ID:???0197nobodyさん
2005/12/23(金) 18:58:13ID:???0198nobodyさん
2005/12/23(金) 19:45:53ID:OyeIk+oiSmartyのコンパイル時に
var: Deprecated. Please use the public/private/protected modifiers
が出るようになってうざい。
何かいい方法ないかな?
0199198
2005/12/23(金) 20:03:18ID:???Smarty_Compiler
が含まれていたら無処理にすればいいだけだった
ゲヘヘ
0200nobodyさん
2005/12/27(火) 14:48:31ID:???関数中に配列変数を使うにはどう書くのですか?
{assign var="abc" value="$def.$ghi"} //失敗
0201nobodyさん
2005/12/27(火) 15:36:59ID:???{assign var="abc" value=$def.ghi} //成功
{assign var="abc" value=$def.$ghi} //失敗
ですよろしく
0202nobodyさん
2005/12/29(木) 01:51:35ID:???設計を考え直そうという結果になったんだっけか。
単に$ghiがassignされてて、代入だけだったら↓
{assign var="abc" value=$def.$ghi}
{assign var="abc" value=$def[$ghi]}
でいけた気もする。 ループの時とかがだめなのよね。
0203nobodyさん
2006/01/04(水) 12:10:03ID:fhuv2FvB{section name=x loop=$TotalDepartment}
{section name=i loop=$DepartmentRest}
・・・
{/section}
{/section}
とネスト構造にさせて、{section name=i loop=$DepartmentRest}のループが終わったら
一番上のループに戻って、再度iの値を0に指定したいのだけど、{$i=0}では当然エラーになるし
どうすればいいか試行錯誤しています。どなたかご教示ください。
0204nobodyさん
2006/01/06(金) 12:40:03ID:???あと代入は{assign}でできる。
0205nobodyさん
2006/01/06(金) 14:19:41ID:???でいいんじゃないか?
0206nobodyさん
2006/01/06(金) 23:21:24ID:???これって多分Smartyみたいなテンプレートエンジン使ってるんだろうな。
0207nobodyさん
2006/01/07(土) 02:39:05ID:???文字列操作分のパフォーマンス落ちを回避したいだけかも知れないけど。
0208nobodyさん
2006/01/07(土) 13:12:17ID:???おおよその概略は理解できたのですが、例えば、
全ページで共通なメニューのHTMLを一元化し各ページで読み込む、
その際、リンク先のURL等を変数で動的に置き換える、
ようなことって実現可能でしょうか?
サンプルでは、データ取得処理→テンプレートに適用、のような簡単な例しかなくて…
0209nobodyさん
2006/01/07(土) 13:39:46ID:???Amazonは、MasonっていうPerlで書かれたテンプレートエンジンを使ってるようです。
ttp://neta.ywcafe.net/000492.html
0210nobodyさん
2006/01/07(土) 14:33:03ID:???> 全ページで共通なメニューのHTMLを一元化し各ページで読み込む、
{include}で別口のテンプレートファイルを読み込める。
複数のページから同一のテンプレートを使うこともできるし。
> その際、リンク先のURL等を変数で動的に置き換える、
メニューからのリンクは絶対パスに統一すれば無問題。
ちょっとナビーゲーションとか高機能にするのに相対パスが必要ならPHPで頑張ってロジック書いた上で変数にassignすればいい。
0211nobodyさん
2006/01/07(土) 14:46:16ID:???レスありがとうございます。
include調べてみました。なるほどこれで大丈夫そうです。
リンク置き換えに関しては、開発環境と実運営環境の差を吸収するために
常に変数からの動的生成でやっておりました。
include元の変数が全て利用可能ということなのでこれも問題なく実現できそうです。
0212nobodyさん
2006/01/07(土) 18:14:21ID:53dkxsiL0215nobodyさん
2006/01/08(日) 11:53:42ID:MOiqJ8HAそういう バッドノウハウを w
0216nobodyさん
2006/01/08(日) 13:34:12ID:???0219nobodyさん
2006/01/08(日) 16:04:14ID:7XLo98xzSmartyの方がちょっと速かったよ。
0220nobodyさん
2006/01/08(日) 17:34:47ID:???テンプレートエンジンのメリットが薄れると思う
Perl の Template::Toolkit とかも
0221nobodyさん
2006/01/08(日) 17:53:55ID:???0222nobodyさん
2006/01/08(日) 18:08:33ID:???俺の場合はテンプレートにロジックは書けたとしても書かないようにしてる。
テンプレート内に書くのはHTMLを生成すること自体に必要な条件分岐とループと変数の表示以外には基本的に何もしない。
その他必要なロジック(例えばリンクのURLを文字列操作とか)は全てViewでやってる。
0223nobodyさん
2006/01/08(日) 18:46:09ID:???それが普通だし、そうじゃないとテンプレートエンジン使ってる意味ないしなぁ。
>>220はゴリゴリ書いたりしてるの?
0224nobodyさん
2006/01/08(日) 19:22:36ID:???これが枯れたら最強じゃね?
テンプレートエンジンはそんなに内部をいじるものでもないから
extensionと親和性が高いと思う。
0225nobodyさん
2006/01/08(日) 20:05:02ID:???なるほど。基本的にコンパイラ(というかコードジェネレータ)だからFlex+Bison使ってCで実装したほうが賢いってわけか。
Smartyの字句解析+構文解析ってムチャクチャだもんなw
0226nobodyさん
2006/01/09(月) 12:18:38ID:???0227nobodyさん
2006/01/09(月) 13:02:31ID:m48rbPvoあれ、俺Smarty+SJISテンプレートで使ってるけど、今のところ何の問題もないみたい
(たしかに一昔前のバージョンまではSJISダメだったけど)
この文字が入ってたらエラーになる、みたいなのがあるのかな?
どんな制限があるのか詳しい人いたら教えて
0228nobodyさん
2006/01/09(月) 13:48:28ID:???開始タグと終了タグを変更すりゃ大丈夫そうだけど。
0229nobodyさん
2006/01/09(月) 15:50:33ID:0a34r5jX<td>{$san.$k.0.TITLE}</td>
<td>{$san.$k.0.DESCRIPTION}</td>
<td>{$san.$k.1.DC:DATE}</td>
のように書いてみた。
TITLEやDESCRIPTIONは読めるけどDC:DATEは読めない
syntax error: unrecognized tag: $san.$k.1.DC:DATE
ほぼ間違いなく「:」を誤読されてるみたいだけど解決できませんか?
0230nobodyさん
2006/01/09(月) 17:26:41ID:???{assign var="date" valud="DC:DATE"}
<td>{$san.$k.1.$date}</td>
もしくは$smarty->assign()するときにDC:DATEの方をいじるとか。
0231nobodyさん
2006/01/10(火) 11:23:45ID:???アリガd
やっぱストレートには行かないですねー
PHP側で$sanを作るときにkeyを変更しました(汎用性が・・ ;_;)
0232227
2006/01/11(水) 00:22:37ID:62rgCa7x「閲」とかがあるとダメらしい
ttp://ns1.php.gr.jp/pipermail/php-users/2003-February/013595.html
この辺で無事解決しました
0233nobodyさん
2006/01/11(水) 13:26:36ID:???携帯端末向けのときだけSJISにしたかったので。
0234nobodyさん
2006/01/11(水) 13:38:59ID:???JavaScriptとかStyleSheetのために{literal}使うのはまずそれ自体面倒臭いし、JavaScriptやStyleSheetの中にSmartyの変数を入れたい時とかもっと面倒臭い。
<? ?>にしたらエディタの色分けがPHPのままでもある程度ちょうど良かったってのもあるし、SJIS問題も一気に解消。
問題はXHTMLくらいだろうけど、今のとこ使う予定なし。
0235nobodyさん
2006/01/11(水) 17:37:21ID:???XMLだね
0236nobodyさん
2006/01/11(水) 18:23:19ID:???人それぞれなので別に止めないけど。
漏れ的にはcssとjsは外部ファイルなので問題茄子。
リンク先書くとき基準ディレクトリがphpファイル側にあるのは若干辛いものがある。
0237nobodyさん
2006/01/12(木) 00:14:14ID:???んで、テンプレートをごりごりSJISで書いてます・・
そのうち問題起きるんだろうなぁ
0238nobodyさん
2006/01/12(木) 00:57:03ID:F7HO2NXcjavascript の所 {literal} で囲まないとすぐエラーになるし。
0239nobodyさん
2006/01/12(木) 00:58:04ID:???load_filterでEUC<>SJIS変換すると、絵文字が化けるんだよなぁ
&xxxx;形式だと、開発PC上で表示(i絵文字インストール済み)できないから不便だし。。。
今はこのあたりを参考に変換掛けて使ってるけどなんかいい方法ないのかなぁ
http://ke-tai.org/index.php?cmd=read&page=DoCoMo%2F%A5%B5%A5%A4%A5%C8%C0%A9%BA%EE#content_1_7
あとmb_convert_kanaも、同様に絵文字が化けちゃうのも困りもの
0241nobodyさん
2006/01/12(木) 15:27:23ID:???0242nobodyさん
2006/01/12(木) 22:09:37ID:F7HO2NXcxops?
0243nobodyさん
2006/01/13(金) 00:13:16ID:???0244nobodyさん
2006/01/13(金) 12:29:11ID:???]]></php:PHPCode>
これならどうだ!
0245nobodyさん
2006/01/13(金) 15:42:28ID:???0246nobodyさん
2006/01/13(金) 23:04:51ID:???単純なforループでたいがい何とかなるのに
sectionのキモい仕様は何なんだよ。氏ね。
0247nobodyさん
2006/01/13(金) 23:50:14ID:???あと定数への参照機能な。
0248nobodyさん
2006/01/14(土) 00:28:32ID:???0249nobodyさん
2006/01/14(土) 00:34:49ID:???$hoge[1] = 'one';
$hoge[0] = 'zero';
$hoge[2] = 'two';
てなってるとforeachとsection動作違うと思われ。
0251nobodyさん
2006/01/14(土) 00:43:38ID:???0252nobodyさん
2006/01/14(土) 02:42:28ID:YyEEFPbbsection の使い方覚えるのめんどうなのでforeachしか使った事ありません。
0253nobodyさん
2006/01/14(土) 03:06:05ID:???0254nobodyさん
2006/01/14(土) 10:50:17ID:???0255247
2006/01/14(土) 13:35:15ID:???最初に section を使い始めて、foreach 使ったことないや。
逆に聞くけど foreach を使う理由ってなに?
俺はレコード内容を行番号と列名の連想配列に格納して色々な形で出力するのに section のネストを使ってる。
データベースから取り出した通りに並んでるから別に他の命令にする理由がないだけなんだが・・・。
0256nobodyさん
2006/01/14(土) 14:33:27ID:???テンプレートとロジックを別の人間が作った場合、ソートされてることを保障させるより
単純にsectionで処理した方が安全だと思うんだが。
そこまでsectionを嫌う理由を聞きたい。
>>255
キーが未知の連想配列をキーとともに出力するとき。
0257nobodyさん
2006/01/14(土) 14:43:49ID:???やっぱりそうですか。
個人的に気持ち悪いんで、そういう配列はつくらないんですよ。
テスト仕様書書くとき期待値を設定できないし。
0258nobodyさん
2006/01/14(土) 14:46:19ID:???{section name=col loop=$table[row]}
{$table[row][col]}
{/section}
{/section}
{foreach from=$table item=row}
{foreach from=$row item=col}
{$col}
{/foreach}
{/foreach}
キー名を出力しなければこんなもんか
漏れはforeach派だが、単に統一してた方が分かりやすいからという理由だな
sectionはぱっと見で処理が分かりづらいというのもある
0259nobodyさん
2006/01/14(土) 14:47:04ID:???0261nobodyさん
2006/01/14(土) 15:04:40ID:???0262nobodyさん
2006/01/14(土) 15:05:04ID:???$array2 (a,b,c)
とか別の配列に入ってるのを同時に回したいときに便利なのがsectionでしょ
$array (array(1,a),array(2,b),array(3,b))
とかだったらforeachでいいかと。
0263nobodyさん
2006/01/14(土) 15:37:17ID:???そうすると全部 section でいいのでは・・・。
foreach 使ってる人は無理して転向しなくていいけど。
>>260
テンプレートエンジンは使ったほうがいいぞ。
圧倒的に管理しやすくなる。
0264nobodyさん
2006/01/14(土) 16:36:11ID:???0265nobodyさん
2006/01/14(土) 16:40:58ID:???0266265
2006/01/14(土) 16:41:58ID:???0267nobodyさん
2006/01/14(土) 16:43:49ID:???効率だけを考えるならC, PHP, Java, その他スクリプトで一番手っ取り早いのを適宜使うしなぁ。
0268nobodyさん
2006/01/14(土) 18:17:14ID:???foreach を使うのは簡単だから。
配列まわすならforeachってのは直感的にわかりやすいと思うんだけど
section を使ったほうがシンプルに書ける場合があるってことですね。
0269nobodyさん
2006/01/14(土) 18:21:16ID:???好みの問題かもしれないですがソートはロジックで保障すべきだと思うけど。
そこをテンプレートでってのがsectionを嫌う理由かもしれません。
単なる好みですね。
0270nobodyさん
2006/01/14(土) 18:21:47ID:???0272nobodyさん
2006/01/14(土) 20:14:03ID:???逆じゃない?
ほかのjava,rubyなどと違ってもともとhtml埋め込み型言語なのだから、
webprogでのテンプレートエンジンの重要さはほかの言語より重要度では劣るのでは?
php自体が独自タグによるテンプレートエンジンであるという主張ならわかるが。
0273nobodyさん
2006/01/14(土) 20:48:50ID:???PHP 生書きでテンプレートもどきってのはあんまり感心しない
ただ、Smarty でロジック書きまくってるのは PHP そのままで
いいじゃんと思うこともあるな、確かに
言語増えただけじゃん、みたいなね
0275nobodyさん
2006/01/14(土) 21:41:07ID:???htmlを生成するための道具としてのテンプレートエンジンの重要性ってそれなりに低い気もするが。
どちらも使ってるけど、どっちかっていったら無くなって困るのはフレームワークかな。
いざとなれば生書きにもそれなりのメリットはあるし。
というか、2つは矛盾しないし、目的も違うから比べること自体アレだけど。
0276nobodyさん
2006/01/14(土) 22:37:27ID:???自分がプログラム書くにせよ、他人に流すにせよ、プロトタイプコードをそのまま渡せるから。
Smarty より手軽なものがあればそっちを使うけど。
0278nobodyさん
2006/01/16(月) 00:49:42ID:???xmlcとまでは行かなくても、amritaかkwartzライクなテンプレートエンジンがphpにも欲しいな。
kwartzも期待してたけど開発停止状態のうえphpコンパイラはobsoleteみたいだしなぁ...
0280nobodyさん
2006/01/17(火) 01:42:35ID:ZnOPSUo70281nobodyさん
2006/01/17(火) 02:31:48ID:ZnOPSUo7{include file=$includeFile}
のようにして include に変数を渡せるのですが、
これと同じようなことをFlexyでも可能でしょうか?
0282nobodyさん
2006/01/17(火) 09:48:32ID:???$hoge1[n]->hoge2[n]->xxx
みたいな変数でも
二重にして回せるよ
sectionはそれができないから使わない
0283nobodyさん
2006/01/18(水) 20:15:38ID:???0284nobodyさん
2006/01/19(木) 00:09:19ID:???0287nobodyさん
2006/01/19(木) 00:38:24ID:qu6lGv13自身があるなら、どーんと構えとけ。
0288nobodyさん
2006/01/22(日) 14:18:24ID:???0289nobodyさん
2006/01/22(日) 20:05:05ID:???globalfunctionsオプションをtrueにして
{GLOBALS.constant(#CONSTANT_NAME#)}
で参照はできる。
if文の中に使ったり複雑なことしようと思うと難しいけど。
0290nobodyさん
2006/01/22(日) 20:39:07ID:???もうテンプレートエンジン使わなくても、PHPでいいやんって思ったりするね。
0291nobodyさん
2006/01/22(日) 21:47:39ID:???0292nobodyさん
2006/01/22(日) 23:16:09ID:???index.php に画面遷移先に必要な定数だけ書いて、後は画面単位で大雑把なスケルトンコードを書けばいい。
逆にいえばそれ以外にはメリットがない・・・。
んまー、コードはすっきりするけどね。
0293nobodyさん
2006/01/23(月) 00:19:55ID:???{$form.radio2.label}
...
...
みたいにカウンターでraidoの値を増やしていきたいのですができますか?
{counter start=1}
{$form.radio$counter.label}
とかforeach使ってみましたがダメでした。
0295nobodyさん
2006/01/23(月) 01:48:37ID:???mojavi, HTML_QuickForm + Smartyを利用していて addElementするとそうなるからです。
0296293
2006/01/23(月) 03:07:43ID:???みたいにして無理やり解決してみました。
0297nobodyさん
2006/01/23(月) 13:03:47ID:???0298nobodyさん
2006/01/23(月) 15:09:54ID:???addGroup使っても同じかと思って気にしていなかったんですけど…
どうやるんですか?というかどう違うのですか?
0299nobodyさん
2006/01/23(月) 16:23:36ID:???http://pear.php.net/manual/ja/package.html.html-quickform.html-quickform.addgroup.php
0300nobodyさん
2006/01/23(月) 23:34:04ID:???0304nobodyさん
2006/01/24(火) 17:55:41ID:???単純に構造が分かりにくいから。
同じ [n] で回すなら、別の変数に分けた方がいい。
優れたプログラマなら自分の死んだ後のことも考えとけ。
0306nobodyさん
2006/01/24(火) 21:53:48ID:H58eWtwf( ,_ノ` )y━・~~~
0308nobodyさん
2006/01/24(火) 22:15:47ID:H58eWtwf( ,_ノ` )y━・~~~
0309nobodyさん
2006/01/25(水) 00:57:06ID:???乗らなくてよかった
0311nobodyさん
2006/01/25(水) 07:32:48ID:???0312nobodyさん
2006/01/25(水) 08:13:34ID:???加えてシンタックスの限界にも不満を感じていた。
そんなわけで、メンテも開発も止める。
http://www.paullockaby.com/faq/#0015
0313nobodyさん
2006/01/26(木) 11:25:03ID:7udzlJtlfor ($i=0;$i<10;$i++){
echo "<br>"
}
みたいな単純なループをしたい場合どうしたらいいですか?
配列の要素数のループは出来るのですが
このような単純なループの書き方が分かりません。
0314nobodyさん
2006/01/26(木) 11:29:05ID:???<br>
{/section}
で出来ました。
0315nobodyさん
2006/01/27(金) 00:56:53ID:???radioエレメントへsetValueして動いた方いますか?
0316nobodyさん
2006/01/27(金) 10:46:07ID:???どう動かないのか良く分からないけど…
radioに対するsetValueは、
同じnameを持つ全てのElement全てに対して実行しないと
以前のチェックが解除されない。
<input type="radio" name="foo" id="foo1" value="1" checked="checked">
<input type="radio" name="foo" id="foo2" value="2">
があったとして、foo2だけにチェックを入れるには、
foo1, foo2両方にsetValue(2)を実行しないと駄目。
0317nobodyさん
2006/01/29(日) 04:26:53ID:???escape:html
でおけ?
0318nobodyさん
2006/01/31(火) 11:29:21ID:RWHeKAHi>全てのselect/inputタグにさらなる属性を追加
とあるんですけど、html_select_dateのyear_emptyみたいな使い方ができるのでしょうか?
ちなみに「all_extra=""」と記述してみたりしたのですが何も変化がありません。
0319nobodyさん
2006/02/01(水) 23:35:59ID:BABJfEVvSmartyでキャッシュファイルを出力していますけど、ファイルがこのメッセージのように見つからないと出ます。どなたかご教示願います。
0320nobodyさん
2006/02/01(水) 23:37:58ID:BABJfEVv補足ですが、実際このファイルは存在しています。
0322nobodyさん
2006/02/02(木) 11:25:37ID:???(**.php、**.tpl 共にEUCで記述し、HTMLではShift_JISで出力)、
postfilterでEUC→SJISを登録しただけではHTMLがEUCのままで失敗し、
outputfilterで変換プラグインを登録するとうまく動作しました。
それぞれのフィルタの適用されるタイミングをよく理解していないのですが、
postfilterで出力がEUCになった理由はなんなのでしょうか?
prefilter → [コンパイル] → postfilter → [キャッシュPHP] → outputfilter → [HTML]
という順序と認識しているのですが…
キャッシュPHPからHTMLを吐く際にさらに文字コードの変換が内部で行われている、のでしょうか?
0324nobodyさん
2006/02/03(金) 21:14:43ID:Gniyc3tZ何かいい方法ないですか?
0325nobodyさん
2006/02/03(金) 21:20:20ID:???0326nobodyさん
2006/02/03(金) 22:11:50ID:???結局、テンプレートエンジン使わなくなったよ。
テンプレートエンジンは異なる文法を使うのが面倒くさかったり、
制約やバグがほげほげだったりして、
利用する価値はたいしてなかった気がする・・
デザインの分離はしてるけど、記述は生のPHPでいいよ。
0327nobodyさん
2006/02/03(金) 22:15:43ID:???0328nobodyさん
2006/02/03(金) 22:19:55ID:???デザインを分離して書けば、
PHPのコードもテンプレートエンジンのコードも
たいして変わらないものになる(もしくはそうできる)
0329nobodyさん
2006/02/03(金) 22:58:44ID:???その辺は徹底させてるから問題ない。と言うかそんなもん持って来られたら怒鳴って付き返s(ry
まぁ、それで問題なくやれてるんならいいんじゃね?
俺の所ではコレでやれてるから、おまいのとこでもやれるに決まってる。ってのが常に成り立つわけじゃないし
0330nobodyさん
2006/02/03(金) 23:19:23ID:???漏れはあんまり好きじゃないなぁ
デザインの分離は完璧だぜ!って言う人のPHP混在のテンプレートを見てみたい
0331nobodyさん
2006/02/03(金) 23:34:20ID:???<?php echo ?>でやってます。
ちょっと冗長な感じはあります。
0332nobodyさん
2006/02/03(金) 23:39:01ID:???例えばテーブルの出力とかどうやってんの?
0333nobodyさん
2006/02/03(金) 23:46:52ID:???でも見た目すっきりしてほしい感じはありますけど。←ここだけ生PHPだと微妙なところ。
テーブルの出力については、テンプレートエンジンも生PHPも同じでは?
フォームなどの定型HTMLはViewクラスで生成させることもあります。
0334nobodyさん
2006/02/04(土) 00:06:24ID:???記述が比較的短いってのも利点かな。
PHPテンプレートってのはSmartyとかが世の中にまかり通った後で(つまりテンプレート化の重要性が認識されるようになった後で)、「PHPでも同じじゃね?」派の人たちによって広まった概念じゃないかと思ってみたり。
まあどっちも得手不得手があるだろうし、好きなほう使うってことで問題ないと思う。
俺の場合は個人的にSmarty使ったほうがソースの見た目が断然すっきりするっていうくだらない理由でも気持ちいいから使ってるよ。
0335nobodyさん
2006/02/04(土) 00:35:35ID:???PHPテンプレートって考え方はテンプレートエンジンとの対比で生まれたんだろう。
でもまぁ、そもそも PHPがHTMLにロジックを埋め込む って目的で生まれたんだから、
PHPテンプレートなんて当たり前といっちゃ当たり前だな。
0336nobodyさん
2006/02/06(月) 09:24:34ID:???大前提で、それが成り立つ現場でなきゃ使えないっていうことが
なんだかスルーされてる気がするんだが。
あとテンプレートにしておけば htmlspecialchars 強制適用とか
やりやすいし「より安全」だと思う。
0337336
2006/02/06(月) 09:25:37ID:???「いわゆるPHPテンプレート」より「テンプレートエンジン」の方が
安全ということが言いたかった。
0338nobodyさん
2006/02/06(月) 09:38:34ID:???0339nobodyさん
2006/02/06(月) 09:45:41ID:???0341nobodyさん
2006/02/06(月) 19:31:22ID:AJx7JA/MOOPできない奴がそういう事言うよね。
0342nobodyさん
2006/02/06(月) 19:40:47ID:???0343nobodyさん
2006/02/07(火) 06:15:30ID:???それを言い出すと、
生のPHPの問題点をデザイナーにちゃんと説明して
理解させてない>>340が使えない子なだけです
も同様に成り立つんで、揚げ足取りとしてはダメダメだな。
0345nobodyさん
2006/02/07(火) 10:34:47ID:???<?php $request = $_REQUEST; print($request[$req['name']]); ?>
というのを
$request, $reqにはassignできているとして
$request[$req['name']]の部分はテンプレートにどう書けばいいでしょうか。
0346nobodyさん
2006/02/07(火) 10:49:13ID:???assign使って2段構えかな。
{assign var="tmp" value=$req.name}{$request.tmp}
0347345
2006/02/07(火) 10:53:47ID:???もうひとつ、345と同じかもなのですが、2次元以上の配列の指定の仕方が
わからないです。初心者ですみません。
たとえばPHPで $data[1]['error']['name']というのは
{foreach from=$data item=results}
として
{$results.error.name}
でアクセスできると思ったのですが、違うみたいで…。
どなたか教えてください。
0349345
2006/02/07(火) 11:09:29ID:???早速ありがとうございます。試してみます。
>>348
ええ、違うようです。でも違っているかどうかを尋ねているのではなく、
2次元以上の配列の指定の仕方を尋ねていますので
ひとつよろしくお願いします。
0351nobodyさん
2006/02/07(火) 12:03:44ID:???でも1コ足りなくない?
0352nobodyさん
2006/02/07(火) 12:24:13ID:???足りなくなくない?
foreachの中で$results は $data[*]相当の配列じゃなくなくない?
0353345
2006/02/07(火) 13:58:46ID:???{$request.$tmp}でいけました。ありがとう。
>>350-352
ごめんなさい。私の配列の数が違ってました。ありがとう。
0354nobodyさん
2006/02/07(火) 15:27:45ID:???これ気持ち悪いよね
無駄な部分が増えるっていうかさー
0355nobodyさん
2006/02/07(火) 16:00:21ID:???まあね。
嫌なら>>345の$request[$req['name']]みないなものは初めから$smarty->assignしないってのが得策かな。
つーか普通に使っててそんなの登場したことないよ。
テンプレートに突入する前にいじくってでも変な構造のものは除去したい性分だし。
2次元以上の配列自体ほとんど皆無だな。(←これはかなり人によるだろうけど)
オブジェクトの配列ならいっぱいあるけど。
テンプレートにはなるべくビューティホーなデータしか渡したくない。
なるべくシンプルなifとforeachだけで解決できるのがベスト(ちなみにsectionは食わず嫌いw)。
だからSmartyの機能ほとんど使い余してる。
0356nobodyさん
2006/02/07(火) 17:44:21ID:???とある配列の件数をif文で使うことってできますか?
{if $hoges|count > 0}
こんな感じで使えるといいのですが
できないですよね?
配列とは別に他の変数として件数を渡すのでしょうか?
0357nobodyさん
2006/02/07(火) 18:01:10ID:???0359名無しさん@お腹いっぱい。:
2006/02/08(水) 10:19:25ID:Lc3DPQ+Bよろしくお願いしますm(_ _)m
携帯電話でsmartyを使ったサイトを作っているのですが
ページが表示できません。
怪しいと思った部分($smarty->debugging = false)など設定
してみたのですが・・だめでした。
原因と思われる理由って何かわかりますでしょうか?
よろしくお願いします。
0360& ◆h9Bn.Lr5Ro
2006/02/08(水) 10:25:12ID:Lc3DPQ+Bエラーの内容については
端末が吐き出しているエラーのようです。
kddi --- このページは表示できません(未対応)
docomo --- 接続できません
0361nobodyさん
2006/02/08(水) 10:37:46ID:???携帯コンテンツ用の正しいHTMLかどうかとか
そのサイトでスタティックなHTMLを置いた場合に携帯で閲覧できるかとか
IE等のPCブラウザでは閲覧できるかどうかとか
確認してみては?
0363nobodyさん
2006/02/08(水) 12:40:50ID:???0364nobodyさん
2006/02/08(水) 14:00:57ID:Lc3DPQ+B検証した結果smartyの問題でなく
headerの問題ということがわかりました
皆さんアドバイスありがとうございました。(_ _)m
0365nobodyさん
2006/02/22(水) 14:11:48ID:???phpではforeach()でやってたんですが
{section name=hoge loop=$a}
〜
{/section}
↑上の$aのところにassign('a',配列数);
と変数渡すしかないのでしょうか?
0366365
2006/02/22(水) 14:19:24ID:???smartyにもforeachあるんですね、失礼しました。
0367nobodyさん
2006/02/22(水) 14:21:26ID:???http://sky.freespace.jp/smarty/SmartyManual_2-6-6J_html/language.function.foreach.html
0368nobodyさん
2006/02/22(水) 15:19:06ID:???各種処理の結果を表示するhtmlのテンプレートを_template.htmlとして用意し、
それを利用してブラウザに情報を挿入したhtmlを表示させるにはどうすればよいのでしょうか?
今までは表示用のhtmlを、あとから情報を挿入したい部分毎に細切れにしたものを変数に入れておき、
情報を挟みつつ順番につなげてからechoで出力していたのですが、
デザイン面の変更にかなり手間がかかっていました。
そこで次に試してみたのは、
_template.htmlの情報を挿入したい部分に{$hoge}と入れておき、
$hoge = "output test";
$output = file_get_content("_template.html");
echo $output;
としてみたのですが、ブラウザにも「{$hoge}」とそのまま表示され、$hogeに格納した文字列は表示されませんでした。
たとえば$output = "テスト{$hoge}";とやると$hogeの内容が表示されます。
どうすれば_template.html中の{$hoge}のような部分に変数の内容を表示させることが出来るのでしょうか?
よろしくお願いします。
0370368
2006/02/22(水) 16:49:35ID:???くだ質スレで質問したところこちらに誘導されたのでこちらで書き込みました。
まだPHPを初めて短いのでテンプレートエンジンに手を出すことは考えていませんでした。
処理を記述したphpファイルからデザインhtmlを呼び出して画面表示できればいいと思っていたので、
外部ファイルを読み込んで変数をぶちこんで出力、ということさえできれば
それ以上の機能はとりあえず欲していません。
テンプレートエンジンに頼るしか手段はないものなのでしょうか?
0371nobodyさん
2006/02/22(水) 16:56:55ID:Lv5GjAsx$smarty->fetch("_template.html");
0372nobodyさん
2006/02/22(水) 17:26:17ID:???先のことを考えるなら、テンプレートエンジンの導入も健闘してみる価値はある。
とりあえず、急ぎで何とかしたいって言うなら、
_template.html内の{$hoge}の部分を
<?php echo $hoge ?>
として
php側で処理の最後に
include('_template.html');
0373nobodyさん
2006/02/22(水) 20:50:40ID:???私も昔smarty程の機能は必要がないと思いってこんな方法で試行したことがあります。
【テンプレート(index.tpl)】
<html>
<body>
<img src="%%GAZOU%%">
</body>
</html>
【PHP】
//テンプレート読み込み
$Path = 'index.tpl';
if (($fp = fopen($Path,"r")) == false){
echo('error: load template')
}
while(!feof($fp)){
$result .= fgets($fp);
}
fclose($fp);
$result = str_replace("%%GAZOU%%", 'welcom.jpg', $result);//文字置き換え
echo($result);//出力
テンプレートデータを持つクラスを作ってしまえば、ソースも美しくなるでしょう。
私の場合、クラスに機能追加し始めだしてから・・・「結局smarty??」となりましたがw
0374373
2006/02/22(水) 21:04:30ID:???>>_template.htmlの情報を挿入したい部分に{$hoge}と入れておき、
>>$hoge = "output test";
>>$output = file_get_content("_template.html");
$output = str_replace('{$hoge}', $hoge, $output);
>>echo $output;
と4行目を追加すれば置き換えられると思いますよ。
0375nobodyさん
2006/02/23(木) 01:11:06ID:???<?php echo $hoge ?>
がめんどくさくないなら一番楽だと思うんだけど。
0376nobodyさん
2006/02/23(木) 01:20:27ID:???0377nobodyさん
2006/02/23(木) 21:14:59ID:81PJfTdI0378nobodyさん
2006/02/24(金) 16:34:08ID:S8CqOJp10380377
2006/02/24(金) 16:56:42ID:S8CqOJp1俺は377
0381nobodyさん
2006/02/24(金) 23:56:24ID:???後はこれでいいよね。
{include_php file="hoge.php"}
0382nobodyさん
2006/02/25(土) 09:21:21ID:???<li>{$hoge[i]}</li>
{/section}
この時に、if (i == count($hoge)) の場合に処理をしたいんですが、
どうすればいいですか?
0383nobodyさん
2006/02/25(土) 09:28:01ID:???0385nobodyさん
2006/02/26(日) 18:52:13ID:???0386nobodyさん
2006/02/26(日) 18:58:41ID:???0387nobodyさん
2006/02/26(日) 21:34:41ID:???テンプレート内の{php}内にある $hogeに変数を渡せますか?
<h1>{$hoge}</h1> ←ここに入ってる$hogeを
{php}
sample($hoge); ←ここに入れたい
{/php}
0388nobodyさん
2006/02/26(日) 21:52:40ID:???でいけない?
0390nobodyさん
2006/02/26(日) 22:14:23ID:???sample($this->get_template_vars('hoge'));
とかどうだろ。
0392nobodyさん
2006/02/27(月) 22:17:07ID:???一方ではパフォーマンス落ちるとか、
フレームワークの方がいいとか言われてますが、
どう思いますか?
0393nobodyさん
2006/02/27(月) 22:21:19ID:???フレームワークを骨とすると、テンプレートエンジンは皮。
0394nobodyさん
2006/02/27(月) 23:20:42ID:???0395nobodyさん
2006/02/28(火) 01:38:49ID:???0396nobodyさん
2006/02/28(火) 09:34:12ID:???0397nobodyさん
2006/02/28(火) 11:25:29ID:???0398nobodyさん
2006/02/28(火) 13:11:01ID:08x2mpcp0399nobodyさん
2006/02/28(火) 13:19:21ID:0HF5o3Qs0401nobodyさん
2006/02/28(火) 15:19:11ID:???0402nobodyさん
2006/02/28(火) 19:33:40ID:???smarty覚えて損したかな??
だってさ、
やっとPHP覚えて、smarty覚えたんだけど・・・
フレームワークっつーのを知ってまたフレームワーク覚えなきゃなあ・・・
0403nobodyさん
2006/02/28(火) 19:59:21ID:???フレームワーク不要派もいるし
0405nobodyさん
2006/02/28(火) 20:57:20ID:???0406nobodyさん
2006/02/28(火) 21:04:43ID:???0407nobodyさん
2006/02/28(火) 21:12:10ID:???基本的に {$var} {if} {foreach} {include} {cycle}
まれに {section} {assign} {strip}
あと修飾子 |default |nl2br |date_format
それ以外のことはだいたいPHPでやってる。
0408nobodyさん
2006/03/01(水) 01:26:34ID:???{if} {/if}だらけになっちゃう。
どうしてますか?
0409nobodyさん
2006/03/01(水) 04:31:23ID:???とは?
0410nobodyさん
2006/03/01(水) 06:18:00ID:BvRBPutv0412408
2006/03/01(水) 20:02:59ID:???<h1>見出し</h1>
<p>あああ<span>いいい</span>ううう<p>
<h2>見出し</h2>
<p>ええええ<a href="hoge">おおお</a><p>
<hr>
<h3>見出し</h3>
<div>
<ul>
<li><a href="hoge">かかか</a></li>
<li><a href="hoge">ききき</a></li>
<li><a href="hoge">くくく</a></li>
<li><a href="hoge">けけけ</a></li>
<li><strong><a href="hoge">こここ</a></strong></li>
</ul>
</div>
0413nobodyさん
2006/03/01(水) 20:05:42ID:???だけ四文字なのが気になる
0414408
2006/03/01(水) 20:11:28ID:???strongがあったりなかったり、
ulだったりolだったり、h3があったりなかったり・・・
大変・・・
0415nobodyさん
2006/03/02(木) 02:00:48ID:???具体的には
{$percent}%:残り{100 - $percent}%
$percentは80とすると
80%:残り20%
と表示したいのですが
実際は
80%:残り100%
となります。
0416nobodyさん
2006/03/02(木) 03:01:45ID:???スペルミスしてない?
0417nobodyさん
2006/03/02(木) 10:41:25ID:???半角スペース消せばいける気がする。
0418415
2006/03/02(木) 12:04:45ID:???{100-$percent}だと(実際は$result.percent)
Fatal error: Smarty error: [in TemplateName line 85]:
syntax error: unrecognized tag:
100-$result.percent (Smarty_Compiler.class.php, line 436)
in Path/to/Smarty.class.php on line 1095
となってしまいます。
{$result.percent - 100}だと$result.percentの値
{100 - $result.percent}だと100
となります。「tagじゃ無ぇ」と言われても…。
どうしたらよいのでしょうか。
0419nobodyさん
2006/03/02(木) 12:21:32ID:???式の左側がリテラル数値だと構文解析がうまく行かないみたいね。
100を一旦別の変数にアサインしておくとかしか思いつかない…
0421nobodyさん
2006/03/02(木) 17:58:46ID:???0422nobodyさん
2006/03/02(木) 17:59:36ID:???{(100-$percent)}
0424nobodyさん
2006/03/02(木) 20:44:41ID:???0425nobodyさん
2006/03/03(金) 01:46:20ID:???0426nobodyさん
2006/03/03(金) 04:19:51ID:iZN9RII3同じテンプレートファイル名は使えないの?
複数のmoduleにIndex.tplを置いてるんだけど
コンパイルキャッシュがバッティング(一方のファイルがあれば、それを読んでしまう)
するようになった。
キャッシュファイルの先頭に付加される文字列って
ファイルの位置によって変えてるんじゃないのかなあ。
0427nobodyさん
2006/03/03(金) 07:41:19ID:???$smarty->compile_dirや$smarty->cache_dirをテンプレートファイルがあるディレクトリに応じて変えてやるしかない。
テンプレートファイルの置き場所を階層化する場合ある程度ラッパとか書くといいと思う。
0428nobodyさん
2006/03/03(金) 10:56:04ID:???crc32()とか使ってるみたいだから、衝突する確率が
それほど高い訳でも無いと思うが、あり得なくは無いな。
反則かもしれんが、_get_auto_filename() をオーバーライドするとか。
0429nobodyさん
2006/03/03(金) 13:55:42ID:???0432nobodyさん
2006/03/03(金) 18:34:46ID:???以前俺も同じ問題ではまってたときファイル名かぶったら確実にバッティングしてた気がするけど気のせいかな?
つーかディレクトリ変えるのが一番楽だよ。
ファイル名がかぶってるってことは別のディレクトリにあるってことだから、そのtemplate_dirとcompile_dir・cach_dirに対応関係もたせりゃいいだけだし。
お好みでconfig_dirも合わせてやったり。
個人的にはconfigファイル使わないけどね。
0433nobodyさん
2006/03/03(金) 22:31:43ID:???0434nobodyさん
2006/03/03(金) 22:38:35ID:???428だけど、よく見たら、crcの算出に使ってるファイル名には
template_dirの部分が入ってないみたいだから、
template_dir変えてcompile_dir変えないと確実に起きるのかもな。
ソース見た癖にいい加減な書き込みですまんかった。
0435nobodyさん
2006/03/03(金) 22:45:17ID:???実経験上。
俺はフレームワークなど使う場合は、moduleごとにcompileディレクトリ作成してるよ。
0436nobodyさん
2006/03/03(金) 22:55:29ID:???0437nobodyさん
2006/03/03(金) 23:19:56ID:???バッティングするってことですか?
0438nobodyさん
2006/03/03(金) 23:35:56ID:???そんなのあるんだ。知らなかった。
>>437
template_dirが違ってても、compile_dirが同じならバッティングする、
と思ってたけど、>>436でなんとかなるのかな?
調べてないからわからんけど。
0439nobodyさん
2006/03/03(金) 23:42:52ID:???template_dir/hoge_index.tpl
これで解決するよね
0440436
2006/03/04(土) 01:19:29ID:???fetch()の第3引数がnullのときはSmarty::$compile_idが使われるみたい
0441426
2006/03/04(土) 05:03:02ID:???$compile_idにmodule名をセットする方法でOKでした
>>433
俺もそうする方が自然だと思うなぁ
0442nobodyさん
2006/03/04(土) 10:08:50ID:???0443nobodyさん
2006/03/04(土) 10:09:35ID:???0444nobodyさん
2006/03/04(土) 13:12:53ID:???そりゃそうだけど、たぶんこの問題がおきるのはsmartyの初期化やdisplayメソッドを呼び出す部分を共通化して一箇所に集めた場合。
たとえばフレームワーク(必ずしもmojaviとか大げさなものでなくても単にアプリ全体の骨組みって意味で)を作るとこういう問題にぶちあたりうる。
0446nobodyさん
2006/03/04(土) 19:07:52ID:???良スレです。お世話になってます。
0447nobodyさん
2006/03/08(水) 11:15:02ID:???{literal} <?=DEFINED_VALID ?> {/literal} としてみても、
Smartyの構文解析回避するとPHPの構文解析も飛ばされるようで値が読み込めません。
やっぱ一個一個変数にassignしなおさなければならないのでしょうか?(;´Д`A
0450nobodyさん
2006/03/09(木) 15:36:02ID:???こういう作業は、テンプレートの仕事かなと思い、修正子を調べた
ところ、該当するのが見当たりませんでした。
結局、number_format 関数を通した値をテンプレートに渡す事に
したんですが、何か釈然としなくて・・・。
0451nobodyさん
2006/03/09(木) 15:53:08ID:???俺はそれでいいと思う。
テンプレートに突入する前にMVCモデルのViewでやると考えれば違和感ないと思うけどどうだろう?
0453450
2006/03/09(木) 16:09:48ID:???>>451
そういう見方も出来るんですが、時刻表示とかは修正子を使って、
数字にカンマを入れるときには上位でというのはバランスが悪いん
ですよね。
>>452
マニュアルの読み込みが足りませんでした。(^^;
これが決定打みたいですね。
0454nobodyさん
2006/03/09(木) 16:31:28ID:???PHP組み込みの関数はそのまま修飾子として使えるはずだけど
0455454
2006/03/09(木) 16:32:41ID:???0456450
2006/03/09(木) 18:20:16ID:???454さんが仰る通り、PHP組み込み関数は、そのまま使える様です。
お騒がせしました。
0457nobodyさん
2006/03/13(月) 02:48:18ID:LxXJ5I4v乱数をassignしたのですが反映されません。
キャッシュしてるからというのはわかるんですがこれでは静的ページとなんら変わらないと思います。
実際に使用されてる方はどのように使ってるのでしょうか?
よろしくお願いします。
0458nobodyさん
2006/03/13(月) 05:34:35ID:???0459nobodyさん
2006/03/13(月) 09:59:39ID:???そんなレベルの人間が使うライブラリじゃない。
おとなしく静的ページにしとけ。
0460nobodyさん
2006/03/13(月) 10:38:47ID:???http://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/caching.html
を見ても解決しない?
0461nobodyさん
2006/03/13(月) 18:59:41ID:vm5765LnStrict Standardsエラーってどうしてますか?
開発中はE_STRICTを有効にしたいのですが
なにか回避策はないでしょうか?
0462461
2006/03/13(月) 19:19:07ID:???smartyのrequireのときだけ
一時的にエラーを無効にすることで回避できました
失礼しました
0463nobodyさん
2006/03/13(月) 19:35:16ID:???とはいえHTMLの埋め込みタグはあんまりきれいじゃないし、デザには理解不能。
デザがHTML埋め込みでプログラミングもひっくるめてHTML記述の責任持てよ。
0464nobodyさん
2006/03/13(月) 19:50:18ID:???5.1.3 から "var $hoge" では Notice 出ないようになるみたい。(CVS の NEWS ファイルより)
?? Mar 2006, PHP 5.1.3RC2
- Removed the E_STRICT deprecation notice from "var". (Ilia)
0465nobodyさん
2006/03/14(火) 10:11:00ID:???0466457
2006/03/16(木) 02:50:57ID:???キャッシュ時間の設定とかだとユーザ毎に違う内容を表示させるなどの場合は毎回コンパイルをする事になりますよね?
それは嫌なのでinsert使って見たのですがとても使いづらいです。
毎回表示が変わるようなサイトには向かないんでしょうか。
ユーザ毎に違うデザインを使うのでテンプレートがあるのはとても良いのですが。。
0468nobodyさん
2006/03/16(木) 06:57:34ID:???低脳ウゼェ、消えろ
0469nobodyさん
2006/03/16(木) 07:30:05ID:???素人考えでごめんだけど、いくらデザイナでも Java Script くら解るんだから、 Smarty の構文位何と無く解るんじゃない?
0470nobodyさん
2006/03/16(木) 07:54:46ID:???0471nobodyさん
2006/03/16(木) 08:48:50ID:???オマエモナー
>466
そのあたりのこともこの本に詳しく書いてあります。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798108839/qid=1142466453/sr=1-1/ref=sr_1_2_1/249-5433484-4741106
とりあえず立ち読みしてみることをおすすめします。
0472nobodyさん
2006/03/16(木) 09:33:19ID:???遅いじゃん。
0475nobodyさん
2006/03/17(金) 03:52:37ID:???オンラインドキュメントじゃなくて、書籍になってることに
意義が有る場合もあるのよ。ただ買うだけで満足してしまう
問題があるがねw
0477nobodyさん
2006/03/17(金) 13:52:50ID:???0479nobodyさん
2006/03/18(土) 16:36:29ID:???test.php
├Smarty
├log┬templete [中にtest.tpl.html]
├templete_c
test.phpはこうなっています
define("SMARTY_DIR", "Smarty/");
require_once "Smarty/Smarty.class.php";
$smarty = new Smarty();
$smarty->templete_dir = "log/templetes";
$smarty->compile_dir = "log/templetes_c";
$smarty->assign("now_time", gmdate("Y:m:d H:i:s"));
$smarty->display("test.tpl.html");
ところが、次のようなエラーが出てしまいます。
Warning: Smarty error: unable to read resource: "test.tpl.html" in C:\MyWeb\web\php\script\blabla\Smarty\Smarty.class.php on line 1088
何が原因なのか教えていただけませんか?
0480nobodyさん
2006/03/18(土) 17:47:39ID:???0481nobodyさん
2006/03/18(土) 17:55:27ID:???$smarty->compile_dir = SMARTY_DIR."log/templetes_c";
0482nobodyさん
2006/03/18(土) 19:49:31ID:???define("SMARTY_DIR", 'C:\MyWeb\web\php\script\blabla\Smarty\\');
$smarty->templete_dir = SMARTY_DIR. "log/templetes";
$smarty->compile_dir = SMARTY_DIR. "log/templetes_c";
しかし、まだ同じエラーが出てしまいます…。
0483nobodyさん
2006/03/18(土) 20:52:33ID:EsSA/NIptest.php
<?php
require_once 'Smarty/Smarty.class.php';
$smarty = new Smarty;
$smarty->template_dir = dirname(__FILE__) . '/log/templates';
$smarty->compile_dir = dirname(__FILE__) . '/log/templates_c';
...........
$smarty->display('test.tpl.html');
?>
0484nobodyさん
2006/03/19(日) 00:46:35ID:???変数のに読み込んでおいた内容と使う方法ってあります?
同じ内容のテンプレートを場合によって微妙にパスとかを変えたいので…。
具体的には、本場用とプレビュー用のHTMLを大量生成したいので、
イチイチ1ファイルごとにテンプレートファイルを生成してやると、
速度的に問題があるので…。
0485nobodyさん
2006/03/19(日) 00:59:14ID:???!!!上手くいきました!
大変お恥ずかしいですが、template_dirがtemplete_dirになっていたようですorz
失礼しました
0486nobodyさん
2006/03/19(日) 22:09:41ID:???練習ならディレクトリごと変えてるでしょ。
0487nobodyさん
2006/03/19(日) 22:30:06ID:???なにかSmartyの用途を誤解してないか?
テンプレートファイル自体を動的に生成する必要がある状況って
思い当たらないのだが。
0488nobodyさん
2006/03/22(水) 18:58:12ID:???0489nobodyさん
2006/03/24(金) 20:46:45ID:???0490nobodyさん
2006/03/25(土) 09:48:17ID:???0491nobodyさん
2006/03/25(土) 14:14:45ID:RtAYAo7R0492nobodyさん
2006/03/25(土) 17:11:47ID:WzKCkjotあるブロックを任意の回数だけ繰り返し表示したいのですが、
例えば以下のようなブロックがある場合、どのメソッドを使えば
いいでしょうか?
ちなみにparseメソッドでは表示されませんでした。
<!-- BEGIN foo -->
テスト
<!-- END foo -->
0493nobodyさん
2006/03/25(土) 22:43:48ID:???0495nobodyさん
2006/03/26(日) 01:09:55ID:8F2N8by3え?Sigmaってブロックの繰り返しとか分岐とかできないの?
>>494
Sigmaにforeachってメソッドがあるの?
それともPHPのforeachのこと?
0497nobodyさん
2006/03/26(日) 02:35:34ID:???性格悪いなおい。
0498nobodyさん
2006/03/26(日) 03:16:58ID:???0501nobodyさん
2006/03/26(日) 19:27:14ID:???詳細が知りたければ金払わないと。
0502nobodyさん
2006/03/26(日) 23:09:47ID:???雑魚ってあんまり使わない罵倒語だよね。
君はよく言われる状況なんだね(^^;がんばって生きてね(^^;;;;;;;;
0503nobodyさん
2006/03/26(日) 23:32:27ID:???0505nobodyさん
2006/03/27(月) 01:18:28ID:???http://bubble4.2ch.net/test/read.cgi/wm/1142433991/444
444 名無しさん@お腹いっぱい。 sage 2006/03/26(日) 12:15:46 ID:nUZ48+P7
なんなら徹底的に白黒つけようか?オマエが恥かくだけだぞ。
こっちは引くと言ってるんだ。おとなしくしていろ。
0506nobodyさん
2006/03/27(月) 01:19:06ID:???荒れてウザイから隔離板建てられてるし。
廚向けの言語を使う以上、ノイズが多いのは我慢してもらわないと。
0507nobodyさん
2006/03/27(月) 03:12:19ID:???自治スレで議論してもつけてくれないとからしいけど・・・
0508nobodyさん
2006/03/27(月) 14:41:12ID:???0509nobodyさん
2006/03/27(月) 15:33:04ID:???0510nobodyさん
2006/03/27(月) 15:45:11ID:???0511nobodyさん
2006/03/27(月) 16:49:12ID:???0512nobodyさん
2006/03/27(月) 16:50:15ID:???0513nobodyさん
2006/03/27(月) 20:31:56ID:???0514nobodyさん
2006/03/28(火) 00:08:21ID:???0515nobodyさん
2006/03/28(火) 00:14:29ID:???0516nobodyさん
2006/03/28(火) 00:26:44ID:???出来ないと思うな、思えば負けよ
0517nobodyさん
2006/03/28(火) 05:29:14ID:???0518nobodyさん
2006/03/28(火) 08:11:12ID:???0519nobodyさん
2006/03/28(火) 08:20:15ID:???0520nobodyさん
2006/03/28(火) 09:11:59ID:???cacheって単語ないよね。
0521nobodyさん
2006/03/28(火) 09:23:09ID:???日本語版あるのに。
0522nobodyさん
2006/03/28(火) 09:25:06ID:???0523nobodyさん
2006/03/28(火) 09:25:51ID:???http://pear.php.net/manual/ja/package.html.html-template-flexy.html-template-flexy.compile.php
じゃねーの?
キャッシュってどの部分の話なのか分からないけど。
>>521
ほんの一部だけな。
0524nobodyさん
2006/03/28(火) 12:05:09ID:ct8TgCpW0525nobodyさん
2006/03/28(火) 12:17:18ID:???0527nobodyさん
2006/03/29(水) 21:33:36ID:???> コンパイルされたファイルが存在しない
> テンプレートに変更が加えられており、コンパイルされたものより大きい
テンプレートに変更がない場合は既にコンパイルしたファイルを使うわけだからこれで十分じゃない
0528nobodyさん
2006/04/02(日) 21:51:22ID:pQIOcBrEステータスには「0, 1...」のようなコードが入っています。
これをPHP側で設定したステータス用の文字列で展開して表示したいのです。
PHP側:
$id = array(0, 1, 2);
$code = array(1, 2, 0);
$status = array("0"=>"不明", "1"=>"未完了", "2"=>"完了");
$smarty->assign('ID', $id);
$smarty->assign('CODE', $code);
$smarty->assign('STATUS', $status);
テンプレート側:
{section name=i loop=$ID}
{$STATUS.$CODE[i]}
{/section}
このままだとIllegal offset typeというエラーが表示されてしまいます。
{assign var="tmp" value=$CODE[i]}
{$STATUS.$tmp}
こちらのように、一度変数に格納すると正常に表示されるのですが、あまりスマートではないので、1行で出力する方法は無いでしょうか?
0529nobodyさん
2006/04/02(日) 22:28:40ID:???{foreach from=$CODE item=c}
{$STATUS.c}
{/foreach}
でいいんじゃないの?
0530528
2006/04/04(火) 16:53:19ID:???ご回答どうもです。
サンプルには書いていないのですが、
同時に$ID[i]が使いたい場合もあるのです。
なのでsectionでなんとかできないでしょうか?
0531nobodyさん
2006/04/05(水) 00:44:38ID:???スマートにこだわるのなら
array(
array('id'=>0, 'status'=>1),
array('id'=>1, 'status'=>2),
...
)
みたいな配列にしてからassignした方がスマートじゃないかな
0532nobodyさん
2006/04/07(金) 00:09:04ID:???次に示すような配列を返すようにSQLを発行し、変数$resultに格納しています。
その内容をsmartyのテンプレート内で、foreachで回しながら全件表示するようにしています。
このとき、$itemの中身が入っている場合(0以上の数値)のみ、チェックボックスにチェックを入れたいのですが、
どうやら「$item != ""」と「$item != 0」が同じような動きをしているために、
$itemに0が入っているレコードにはチェックがつかない状態になっています。
これをうまく表示させるにはどうしたらいいのでしょうか。
よろしくお願いします。
//$result
Array( [AAA]=>100 , [BBB]=> , [CCC]=> , [DDD]=> , [EEE]=>0 , [FFF]=> , [GGG]=>)
//smartyのテンプレート内における表示部分
<table>
{foreach from=$result key="key" item="item"}
<tr>
<td><input type="checkbox"{if $item != ""} checked{/if}>{$key}</td>
<td><input type="text" value="{if $item == ""}0{else}{$item}{/if}"></td>
</tr>
{/foreach}
</table>
下に求めている表示例と、現状の表示例を載せておきます。
0533nobodyさん
2006/04/07(金) 00:09:37ID:???//求めている表示結果(□:未チェック/■:チェック)
■AAA [ 100 ]
□BBB [ 0 ]
□CCC [ 0 ]
□DDD [ 0 ]
■EEE [ 0 ]
□FFF [ 0 ]
□GGG [ 0 ]
//現状
■AAA [ 100 ]
□BBB [ 0 ]
□CCC [ 0 ]
□DDD [ 0 ]
□EEE [ 0 ] ← チェックした状態にならない
□FFF [ 0 ]
□GGG [ 0 ]
0534nobodyさん
2006/04/07(金) 04:37:39ID:???<td><input type="checkbox"{if $item != ""||$item == "0"} checked{/if}>{$key}</td>
0535nobodyさん
2006/04/07(金) 12:10:04ID:0TErvImy無事に動きました!
携帯からでスマソorz
0536nobodyさん
2006/04/18(火) 15:32:18ID:???ttp://pc8.2ch.net/test/read.cgi/php/1135847024/
0538nobodyさん
2006/04/18(火) 20:30:28ID:???0539nobodyさん
2006/04/21(金) 07:18:24ID:qi5wvjsu他のテンプレートエンジンvsSmartyならたくさん議論出来ると思うのですが、
ライバルがhtml+phpなのがにんともかんとも。
みんなデザイナさんが書いたhtml+phpソースで鼻血出した事無いのかなー
0540nobodyさん
2006/04/21(金) 07:27:03ID:G2Rp1nFESmartyなら鼻血ださないで済むの?
Flexyなら出さずに済みそうだけど。
0541nobodyさん
2006/04/21(金) 11:25:09ID:???> ライバルがhtml+phpなのがにんともかんとも。
Smartyが実際にそれと同様の結果をもたらしてるんだからしょうがない。
0542nobodyさん
2006/04/21(金) 11:59:49ID:???もうちょっと使うべきものが制限されてたら端から高機能を求めようなんて思わないのに。
そもそも目的はViewを分離(=Viewに制限)することだし、すでに十分果たせてるわな。
0544542
2006/04/21(金) 14:04:57ID:???スマン勘違い。
smartyには表示と関係ない機能が無駄についてるのかと思ってたけど、よく調べてみたらどれも表示に関連する機能だった。
0545nobodyさん
2006/04/25(火) 20:40:31ID:???DBに接続&データを取得し、それをsmartyにアサインして、表示させています。
$obj_smarty->diplay("hoge.tpl",$id);
が一番最後にあるため、せっかくのキャッシュデータがあるにもかかわらず、その前の時点でDB接続をしてしまいます。
表示されるデータは結局キャッシュされたものなんですが。
(コントローラの)ページの先頭で、すでにキャッシュが存在するかどうかのチェックして、
存在した場合は各種処理をスキップするには、どのようにしたら良いのでしょうか?
0546545
2006/04/25(火) 21:03:11ID:???0547nobodyさん
2006/04/26(水) 18:18:54ID:???それを一つの temolate_c に出力してしまうのはやっぱ問題ありますかね
0550nobodyさん
2006/05/01(月) 22:28:39ID:???テンプレート内で他のテンプレートをincludeすると、ちゃんと表示されない。
で、ここに辿り着いたのですが、
ttp://smarty.incutio.com/?page=SmartyDreamweaver
最初の方でデリミタを指定できるっぽいのですが、
"{{"、"}}"と指定しても、ちゃんとincludeしてくれない。
初期設定の"{"、"}"だとincludeしてくれるんだけど…。
この設定でデリミタを変更しても、ちゃんと動いている人いますか?
0551nobodyさん
2006/05/02(火) 00:15:55ID:???0552550
2006/05/02(火) 00:57:53ID:???それも"<%"とかも駄目だったよ…。
Dreamweaver側の設定も何か必要なのかなぁ。
上のコード見ても、ただデミリタを置き換えてるだけっぽいんだけど。
0553550
2006/05/02(火) 01:00:41ID:???デミリタとincludeの間に、スペースが入ってるとかではないです。
("{"、"}"だとちゃんとincludeされるし)
0554nobodyさん
2006/05/02(火) 16:46:29ID:???日本語文字列がキーになっているのを表示したいだけなんですけど。
代替方法として(実験中の断片コードしかなくてすみませんが)
次のようなものを考えました。
(もし日本語文字列が普通に使えるのなら無駄になっちゃうんですが・・・)
その1の案はプラグインを作らなくてもいいがテンプレートが冗長になる。
その2のコンパイラ関数の案はテンプレートが冗長にはならないが、修飾子が使えない。
その3のテンプレート関数の案は冗長にはならず修飾子が使えるが、
コンパイル後のコードがコンパイラ関数よりも無駄がある。
修飾子を使いたいので、その3の方法を採用しようと思っています。
もっと良い方法や間違い・勘違いがあったらコメントください。
0555つづき
2006/05/02(火) 16:47:03ID:???{assign var="nihongo" value="日本語"}
{$data.$nihongo}
その2(コンパイラ関数 プラグインを作る)
{var name='$data.日本語'}
【プラグイン】
function smarty_compiler_var($params, &$compiler)
{
return "echo それっぽい文字列";
}
その3(テンプレート関数 プラグインを作る)
{var name='$data.日本語'}
【プラグイン】
function smarty_function_var($params, &$compiler)
{
return $compiler->_tpl_vars[ピリオドで区切った一つ目][ピリオドで区切った二つ目]・・・;
}
0556nobodyさん
2006/05/02(火) 16:50:17ID:???日本語文字のキーを使わない。
日本語文字が使えるようにSmartyにパッチをあてる。
ってのがあると思いますが、今回はちょっとやめておきたいです。
(すでに日本語文字が使えるSmartyパッチがあれば話は別です)
0557nobodyさん
2006/05/02(火) 17:56:31ID:???【サンプルテンプレート】
{foreach from=$data.details item=detail}
{var name='detail.タイトル'}<br>
{/foreach}
【プラグイン】 プラグインフォルダに function.var.php というファイル名で置く
<?php
function smarty_function_var($params, &$compiler) {
$value = $compiler->_tpl_vars;
foreach(split('[.]',$params['name']) as $param) {
$value = $value[$param];
}
return $value;
}
?>
0562nobodyさん
2006/05/08(月) 12:47:22ID:???0563nobodyさん
2006/05/14(日) 15:18:13ID:???0564nobodyさん
2006/05/25(木) 18:33:22ID:???存在しない場合にエラーになってしまうのですが、
PHPでいうところの isset() のような条件判定で回避できたりしないでしょうか?
PHPを埋め込んで一応対処は出来ているんですが、
せっかくのテンプレートファイルにその箇所だけPHPコードが入ってしまうのがなんともすっきりしません。
0565nobodyさん
2006/05/25(木) 19:55:07ID:???default
0566nobodyさん
2006/05/26(金) 04:37:22ID:???0569nobodyさん
2006/05/26(金) 15:47:30ID:???0570nobodyさん
2006/05/26(金) 15:49:24ID:???0571nobodyさん
2006/05/26(金) 18:29:06ID:???{include file=xxx.tpl value=1}
{include file=xxx.tpl value=2}
{include file=xxx.tpl value=3}
としてもxxx.tplで$valueを参照すると最初の値(1)しか入ってこないのはなぜ?
0574nobodyさん
2006/05/29(月) 22:44:38ID:mZUygf+Dエラーを読んだ限りでは、ファイルのディレクトリが違うかファイルが存在していないといった
感じだったのですが、テストしたところ動作はしていました。
インクルードパスに原因があるのでしょうか、
ちゃんとSmartyのディレクトリを指定しています。
どなたかアドバイス頂ければな、と思います。お願いします。
0575nobodyさん
2006/05/29(月) 22:47:07ID:???0577nobodyさん
2006/05/29(月) 23:31:22ID:mZUygf+Dありがとうございます。
でもローカルなんですけど、それでもパーミッションて関係あるんですかね。
ド素人ですいません。とにかく調べてみます。
0579nobodyさん
2006/05/30(火) 08:16:31ID:???パーミッション分かってない香具師がサイト作ってもソースコード抜かれたりデータ抜かれたりするのがヲチ。
個人情報扱うサイトだけは作らないでくれ。利用者が大迷惑。
0580nobodyさん
2006/05/30(火) 08:22:57ID:???エラーの内容がテンプレートファイルが見つからんとかいうのだったら草植える(w
0581nobodyさん
2006/05/30(火) 12:18:06ID:???(頭文字が小文字)
0582nobodyさん
2006/05/31(水) 12:00:38ID:???0583nobodyさん
2006/05/31(水) 21:15:45ID:???エラーの内容は省略せずにお願いします。
0584nobodyさん
2006/06/02(金) 01:16:31ID:???そしてエスパーは現れずに、質問者は途方に暮れてVBを使い始める。
0585nobodyさん
2006/06/03(土) 00:19:46ID:???0586nobodyさん
2006/06/03(土) 00:20:55ID:???0588nobodyさん
2006/06/03(土) 00:21:49ID:???0589nobodyさん
2006/06/03(土) 00:45:58ID:???return 'hoge';
}
function askdjaocdma(){
return 'askdjaocdma';
}
適当に関数を書いて、登録しないで{$test|hoge|askdjaocdma}と使ってみると何でも使えてしまいます。。。
関数を削除すると、無いよーとエラーにはなります。
0590nobodyさん
2006/06/03(土) 00:51:26ID:???「plugins」というディレクトリにはhogeと定義した関数は入れていません。
0591nobodyさん
2006/06/03(土) 19:33:10ID:???0592nobodyさん
2006/06/06(火) 00:09:12ID:???インクルードするだけで使えるの?
0593nobodyさん
2006/06/08(木) 00:26:47ID:???{method('hoge')}だとエラーになってしまいます。
配列に入れたりして、{method(a[hoge])}とかするしかないでしょうか。
0594nobodyさん
2006/06/08(木) 00:29:55ID:???ちゃんと調べずに書いてごめんなしあ><
0595nobodyさん
2006/06/12(月) 01:45:30ID:???0596nobodyさん
2006/06/19(月) 11:55:23ID:???単純で分かりやすくて簡単に改造も出来るし速いしで結構愛用してたんだけどな・・・
0597nobodyさん
2006/06/22(木) 14:12:56ID:???ttp://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/language.syntax.quotes.html
変数の中に変数を入れる方法ってありますか?
例えば
$num = array('01', '02');
{{foreach from=$num item="num" key="key"}}
<h1>{{$form.enq_01.label}}</h1>
<p>{{$form.enq_01.html}}</p>
{{/foreach}}
で、「enq_01」の01のところに$numを代入したい。
{{$form.enq_$num.label}}
とかやってもだめでした。
0598nobodyさん
2006/06/23(金) 00:17:44ID:???$form.enq[$num].label
これで出来た気がするが。
0599nobodyさん
2006/06/29(木) 14:17:10ID:???Warning: Smarty::require_once(c:\php\includes\internals\core.write_compiled_resource.php) [function.require-once]: failed to open stream: No such file or directory in c:\php\includes\Smarty.class.php on line 1432
Fatal error: Smarty::require_once() [function.require]: Failed opening required 'c:\php\includes\internals\core.write_compiled_resource.php' (include_path='.;c:\php\includes') in c:\php\includes\Smarty.class.php on line 1432
なんかこういうの出てしまいました。
何か解決の糸口を教えていただけないでしょうか。
0600nobodyさん
2006/06/29(木) 15:24:47ID:???以上
0601nobodyさん
2006/06/29(木) 16:17:09ID:???すみません。勘違いしてた。
includes\の中にはSmarty.Class.phpとSmarty_Compiler.class.php
しか入れてなくて、\includes\internals\なんて何処にあんだよ!!
って一人で吠えてました。入れりゃいいのね。
あーすっきり。
>>600
ありがとう!!「以上」って言葉でやっと気づいた。
ずっとPerlしかやってこなかったのに、いきなりPHPをやれと。
でもPHPってなかなか楽しそうですね。それに開発が早そう。
0602nobodyさん
2006/07/23(日) 19:29:29ID:???{<? urlencode($str) ?>}
ではエラーがでてしまいます。
できない?
0603nobodyさん
2006/07/23(日) 19:45:05ID:???0604nobodyさん
2006/07/24(月) 09:26:29ID:???{php}phpinfo();{/php}
とか。
http://smarty.php.net/manual/en/language.function.php.php
マニュアルくらい読め。
0606nobodyさん
2006/07/24(月) 21:30:20ID:???0608602
2006/07/25(火) 00:16:20ID:???0610nobodyさん
2006/07/31(月) 09:24:15ID:???この場合呼び出す.phpファイルと階層が違うためCSSでデザインしにくいです。
何かいい方法ってあるんでしょうか?
0611nobodyさん
2006/08/02(水) 03:03:21ID:???├cssフォルダ
└templatesフォルダ
として、templates内にあるHTML中では、
「<LINK REL="stylesheet" TYPE="text/css" HREF="./css/〜.css">」としておけばOKじゃない?
0612nobodyさん
2006/08/03(木) 12:31:03ID:???自分なりに調べてみたんですが解らなかったです。。
それとも無理なんでしょうか。
0613nobodyさん
2006/08/03(木) 18:04:23ID:???{assign var="stop" value="0"}
{foreach}{if !$stop}
処理
{if ループ抜けたい}{assign var="stop" value="1"}{else}ループ抜けたくない{/if}
{/if}{/foreach}
こんな感じか?
Smartyに渡す前に整形しとくべきだとは思うけど
0614nobodyさん
2006/08/06(日) 20:14:11ID:???0615nobodyさん
2006/08/07(月) 21:34:55ID:muOt4GfJhttp://pc8.2ch.net/test/read.cgi/php/1153652403/
こちらから誘導されてきました。
鮎川寛さんの「 PHP 開発日誌 」ってサイト
どこに行ったかご存知ないですか?
そこで配布していた『HTML テンプレート』を
使いたいのですが見当たらなくて困ってます。
どこに移ったか知っている方、
もしくはPHP5 版『HTML テンプレート』を
再配布しているところを知っている方
教えてください。
0616nobodyさん
2006/08/08(火) 02:11:40ID:???http://sourceforge.net/projects/htmltemplate/
0617615
2006/08/08(火) 20:55:09ID:+NeExxFVありがとうございます!
これって PHP 5.01 版で止まってるんですね。
次のフレームワーク作るときには
別のテンプレートを採用することも考慮しないとな……
0618nobodyさん
2006/08/09(水) 12:49:51ID:???○個目のオブジェクトのメソッドを指定する方法ってあるんでしょうか?
.php
$retarray = array();
while(fetch.....){
$o_work = new $obj;
$retarray[] = $o_work;
}
$smartyobj->assign("objs",$retarray);
テンプレート
{$objs[2]->get_hoge()}
(↑実際にはシンタックスエラーだけど、イメージはこんな感じです)
0619nobodyさん
2006/08/09(水) 13:30:18ID:???0620nobodyさん
2006/08/09(水) 13:51:51ID:z3PeQgxkコレだと動きますね(汗
他オブジェクトメソッドの返り血を指定するとエラーになるようです↓うむむ・・
{$objA[$objB->get_hoge()]->get_hoge()}
0623nobodyさん
2006/08/09(水) 20:18:02ID:???PHP勉強しはじめたばかりの初心者なのですが、
皆さんのお勧めとかお気に入りのテンプレートエンジンって
ありますでしょうか?
例えば、>>616のhtmltemplateとか、Smartyとか。
0624nobodyさん
2006/08/09(水) 22:55:58ID:???ぶっちゃけ作者が使いやすいと思って作った物に対して、どれだけ共感を感じるかじゃね?
0625nobodyさん
2006/08/10(木) 09:59:00ID:???なるだけだと思う。
初心者というなら、
よほどのことがない限りは、どれを使っても大して変わらないと思うし。
0626nobodyさん
2006/08/10(木) 14:31:24ID:???最初は、機能がシンプルで、ソースコードを解析しやすい>>616のHTMLtemplate for PHPを使ってみたらいかがですか?
どんな処理をしているのか、中身を分析すると、自作のテンプレートシステムも作れるようになりますね。
<着眼点>
・それを一つの足がかり=比較基準の材料として、SmartyなりFlexyなり、すでに作られている便利なやつを見ていけばよいのではないでしょうか?
・フレームワークを使う場合は、MVCのView部分と相性の良いテンプレートシステムがあるかも。
0627nobodyさん
2006/08/11(金) 01:03:06ID:???メニュー側のインクルードかなと考えたのですがテンプレートに余計な文字が付くのが気になり、
今は {if $inc1}{include file="$inc1"}{/if} として、includeされたテンプレートファイルでも再帰的に同様のことをしています。
0628nobodyさん
2006/08/12(土) 17:48:50ID:???最初に仕込まれた性癖ってなかなか抜けない。
0629nobodyさん
2006/08/13(日) 02:51:30ID:???0630nobodyさん
2006/08/14(月) 11:17:50ID:???動物は、最初の刷り込みで、同じ事を繰り返す面があるね。
以前のものと、新しいものの「差異」を分析&比較する能力が乏しいから?
女(人間)は、プログラミング操作では作れない。
テンプレートは、プログラミング操作で作れる。自由度高し!
比較検証によって、最初のものに固執せず、常に改善していくことができると思うよ。
・Smartyがベストとは限らない。
・PHPがベストとは限らない。
保守から革新へ
(^^)/
0631nobodyさん
2006/08/15(火) 11:20:20ID:???0632nobodyさん
2006/08/15(火) 14:20:07ID:???0633nobodyさん
2006/08/15(火) 15:11:34ID:???「府、本、旬」
という字があると、そこでエラーを吐いてしまうのですが、
似たような現象になった方はいらっしゃいますか?
その文字があるところでこんなんがでちゃう。
Fatal error: Smarty error: [in index.tpl line 14]: syntax error: unrecognized tag:
0635633
2006/08/15(火) 15:40:21ID:???ありがとうございます!
本とかは文字コードに中カッコが含まれてるということなんですね?
家まで行って感謝の意を伝えたいくらいです。
0636nobodyさん
2006/08/15(火) 15:43:21ID:???そういう文字って他に何があるんでしょう?
SJISの「表」とかとは少し違いますよね?
0637nobodyさん
2006/08/15(火) 15:51:07ID:???Shift_JISとかぶる
まぁ、テンプレートを Shift_JIS で書くとかしなければ良いのだけど
たまーにめんどくさいんだよね
自家製クラス作るのお勧め
0638nobodyさん
2006/08/15(火) 16:26:03ID:???携帯の絵文字を直接扱いたいとか言う状況でなければ、
Shift_JISを使わないようにするのがベスト。
もしくはinput_filterで内部エンコーディングにconvert_encoding。
Shift_JISである必要があるなら出力時に変換。
0639633
2006/08/15(火) 16:54:32ID:???delimiterを {{ , }} にするようにしてみました。
0640nobodyさん
2006/08/15(火) 19:46:36ID:???んで、自分でテンプレート作る時は、当然EUCで書いてフィルターだ
けど・・metaタグがShift_JISで本当はEUCとか
デザイナーに説明するのめんどくさい
0642nobodyさん
2006/08/16(水) 00:52:01ID:???0644nobodyさん
2006/08/16(水) 11:29:47ID:???おそらく、結構重たい処理になっているだろうけど楽だし
そこまで、チューニングが必要なページあまりないしな
0645nobodyさん
2006/08/16(水) 11:51:20ID:???0646nobodyさん
2006/08/17(木) 00:51:44ID:???8ビット時代の苦肉の策ですよ。
0647nobodyさん
2006/08/17(木) 12:14:02ID:kr+Lut29common.confに
[.Database]
host=my.domain.com
と書いて、
PHPの中で
$smarty->config_load('common.conf', 'Database');
として読み込もうとしているのですが、どうも読み込んでくれません。
隠蔽セクション以外なら、読み込めるのですが・・・。
0649nobodyさん
2006/08/21(月) 14:55:34ID:EaU1LrCO0651nobodyさん
2006/08/22(火) 04:29:10ID:???0652nobodyさん
2006/08/22(火) 08:39:44ID:???0653nobodyさん
2006/08/22(火) 13:34:18ID:???0654nobodyさん
2006/08/25(金) 06:10:03ID:???0655nobodyさん
2006/08/25(金) 23:51:43ID:???0656nobodyさん
2006/08/27(日) 20:59:35ID:OoIUz1EV<script>
var hogehoge = "{hogehoge}";
</script>
のように、HTMLのスクリプトタグ内で変数を使おうとすると、「hogehoge = "{hogehoge}";」と
そのまま表示されてしまい、変数が展開されません。
設定オプションを見たのですが、それらしい設定は見つからず、
どうしれば置き返されるようになるかご存知の方教えてください。
なにとぞ、なにとぞよろしくお願いします。
0657nobodyさん
2006/08/28(月) 01:17:22ID:???0658nobodyさん
2006/08/28(月) 03:52:08ID:???もしかして、この現象自分だけなんでしょうか…?
0659nobodyさん
2006/08/28(月) 03:58:23ID:???あとせめてlanguage属性入れておくれ
0660nobodyさん
2006/08/28(月) 04:04:16ID:???安心しろ。ウチの環境でもダメだったw
Flexyのソースは見ていないけど、scriptタグ内は無視している気がする。
気が向いたら、ソース見て究明してくれ。
>>659
この場合、varもlanguage属性は無関係では?
質問者がここに投稿する際に省略しただけかもしれないし。
0661nobodyさん
2006/08/28(月) 13:52:14ID:???scriptで変換されないのはちょっと困るね
0662nobodyさん
2006/08/28(月) 19:20:49ID:???0663nobodyさん
2006/08/28(月) 20:53:09ID:???language属性入ろうがなかろうが同じみたいだし。
0664nobodyさん
2006/09/07(木) 16:39:23ID:???--------------------
You can not use flexy tags {varname} in javascript blocks surrounded by <script></script>, as the whole thing gets too messy with it accidentally replacing stuff it shouldnt..
So if you need to send variables to javascript you can use
<flexy:toJavascript flexy:prefix="xxxxx_"
abc="xyz"
bcd="wxy"
/>
this is turned into php code that converts $object->xyz into xxxxx_abc in javascript
eg. in php
$this->xyz = 1234;
$this->wxy = "hello"
$flexy->outputObject($this);
using the above tags - it ends up at the browser as
<script language="javascript">
var abc = 1234;
var bcd="hello";
</script>
------------------------------
<flexy:toJavaScript>だとちょっと使いにくいと感じたので、flexyのタグ?に
{javascript:}〜{endscript:}というのを追加して、
コンパイル時に<script>タグに変換するようにしてみたら使えた。
もっと良い方法あるのかもしれんがわからん。
0665nobodyさん
2006/09/19(火) 20:20:40ID:???Smartyを導入する場合、テンプレートにPHPの記述は普通しないですよね。
みなさんはname属性はどうやって設定していますか?
普通に文字列を設定すると、リクエストから取得する際に間違えるのが
だるいので、定数使っていたんですが。
↓こんな感じ
<input type="checkbox" name="<?=InputDto::CITY?>" >
0666nobodyさん
2006/09/19(火) 22:06:15ID:???0667nobodyさん
2006/09/26(火) 13:21:21ID:???ビューアと同じ出力場所にINPUTタグがつくだけなのに別テンプレートにしなきゃいけないの?
何かいい方法を><
0669nobodyさん
2006/09/26(火) 16:56:01ID:???ttp://ke-tai.org/index.php?KEMP_Filters
0670nobodyさん
2006/09/26(火) 20:14:02ID:???ifで判断しちゃダメ?
{if $mode == "view"}
{$text}
{else}
<input type=text name=hogeoge value=$text>
{/if}
0672nobodyさん
2006/09/27(水) 09:37:22ID:???入力と表示の時で、フォームのイベントにJavaScriptを書いて切り替えるのはどう?
ついでにCSSの属性書き換えれば、ラベルみたくできるんじゃないかな。
Web公開系だとダメかもしらんけど、業務系ぽいので許される気がする。
0673nobodyさん
2006/09/27(水) 09:40:14ID:???onLoadイベントとかで、フォーム内全体の入力オブジェクトに対して巡回して、
特定のID属性のものの属性を入力と表示で切り替えれば、
個々のフォーム入力要素についていちいち書かなくていいんじゃない?
って意味ね。
0675nobodyさん
2006/09/27(水) 17:49:43ID:???HTML_QuickFormがまさに使えそうです。
Smarty+HTML_QuickFormで行こうと思います><
>>672
それも考えたんですが、もっとスマートに出来ないかと思いまして(汗
0676nobodyさん
2006/09/28(木) 01:25:09ID:???このdynamicの例ではblockの内側がoutputfilterを通ったり通らなかったりするのですがいい制御方法は無いでしょうか
0677nobodyさん
2006/09/30(土) 23:32:17ID:iHGhSOaNphp.iniの設定を
output_buffering = On
output_handler = mb_output_handler
default_charset = EUC-JP
mbstring.language = Japanese
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.internal_encoding = EUC-JP
mbstring.substitute_character = Off
このようにして、テンプレート内で
{$data.birth|date_format:"%Y年%b月%d日"}
とすると月より後ろが
1950年1月%d日
1955年1月%d日?|
みたいに文字化けします。%dの前に半角スペースを入れると
1955年1月 14日K
と、日にちは出るのですが、日の後ろが変になります。
テンプレートもphpもeuc-jpで保存し、テンプレートのmetaタグも
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
としています。
date_formatを使っていない部分は文字化けしません。
mbstringの設定の組み合わせをいろいろ変えてみたのですが改善しません。
何かヒントをお願いしますOTZ
0678677
2006/10/01(日) 01:19:45ID:F96v0AKS0679677
2006/10/01(日) 02:15:06ID:???phpで
print(strftime("%Y年%b月%d日"));
でも文字化けした。
Smarty関係ないじゃんOTZ
phpスレの方に行ってきます
お騒がせしました
0680nobodyさん
2006/10/01(日) 22:24:33ID:???$data = array( array( "1", "あ"), array("1", "い"), array ("2", "う"), array("2", "え" ) )
以下の用に、データのインデックス1と2をくっつけて表示させたいんですが
2x3テーブル (要素が足りない部分はスペースが代入される)
1あ 1い
2う 2え
space space
0681nobodyさん
2006/10/01(日) 22:41:58ID:???なにをしたいのか分からん
ちゃんとルールがあるならできるだろうが
PHP側で表示用にデータを加工するべきだと思う
0682nobodyさん
2006/10/01(日) 23:29:51ID:???0683680
2006/10/02(月) 00:11:10ID:???作った人スゴス助かりましたー
http://ml.php.gr.jp/pipermail/php-users/2005-October/027643.html
0684nobodyさん
2006/10/02(月) 04:42:03ID:???誰かやったことある人いますか?
0685nobodyさん
2006/10/02(月) 18:04:57ID:???0686nobodyさん
2006/10/03(火) 11:40:28ID:???1バイト→2バイト文字に変換しないと化けて使いにくすぎるんですが
0687686
2006/10/03(火) 11:44:03ID:???0688nobodyさん
2006/10/04(水) 18:30:02ID:9Cwrgs3h$flexy->bufferedOutputObject()の返り値のテキストが、
<を<にしたりと特殊文字をHTML用にエンコードされたものになってしまいます。
http://pear.plus-server.net/package.html.html-template-flexy.html-template-flexy.bufferedoutputobject.html
の
/* <tags をパースしないように regex コンパイラを使用する */
$template = new HTML_Template_Flexy( array(
'compiler' => 'Regex',
という部分がそれに対応するやり方のことなのかと思ったのですが、
この通りやっても変換されてしまいます。
('compiler'ってオプションの意味もいまいちわからなかったのですが)
やりたいことは、テンプレートを入れ子のような形で使いたく、
ベースとなるテンプレートを読み込み、その中でコンテンツのテンプレートを読み込みベースに挿入する、
といった感じです。
しかし、挿入された部分のタグの特殊記号が変換されてしまって参っています。
何かよい方法はないでしょうか。
宜しくお願いします。
0689688
2006/10/04(水) 18:32:48ID:9Cwrgs3h3行目は
× <を<にしたりと特殊文字をHTML用にエンコードされたものになってしまいます。
○ <を<にしたりと特殊文字をHTML用にエンコードされたものになってしまいます。
です
0691nobodyさん
2006/10/04(水) 22:17:09ID:???bufferedOutputObjectの結果を$varに入れたとして、
{var:h}
では駄目?
または適当なElementのoverrideプロパティを利用するという手もあるが…
<div id="hoge" flexy:dynamic="yes">
この要素は別のテンプレートの内容で置換される
</div>
$elms = $outerFlexy->getElements();
$elms['hoge']->override = $innerFlexy->bufferedOutputObject($obj);
0692688
2006/10/04(水) 23:37:08ID:???ありがとうございます!
ご教示いただいたどちらの方法でもできました。
:hは恐らく基本的なことですね。勉強不足でした。
0693nobodyさん
2006/10/07(土) 00:03:58ID:/6hITEc20694nobodyさん
2006/10/07(土) 00:36:01ID:???0696nobodyさん
2006/10/07(土) 17:44:00ID:???0697nobodyさん
2006/10/08(日) 11:23:25ID:???tcpならルータが廃棄することは無く送れるから。
0698nobodyさん
2006/10/11(水) 04:19:10ID:???0700nobodyさん
2006/10/12(木) 01:37:29ID:???0701nobodyさん
2006/10/12(木) 03:09:06ID:???って、ネタ無いのか!
0702nobodyさん
2006/10/12(木) 07:19:44ID:???mtuの設定が間違ってる。1430ぐらいなのに1500で設定してるだろ?
0703nobodyさん
2006/11/03(金) 23:22:04ID:N9Ney0mMPHPで言うところの、array_searchみたいなやつ。
何か方法ないかな? ボスケテ;;
0705nobodyさん
2006/11/04(土) 21:15:17ID:+XTG9Sit<table>
{foreach from=$list2 key=id item=item}
<tr>
<td>{$item.name}</td>
<td>{$value.keyname[$id]}</td> ← ここ
</tr>
({/foreach})
</table>
({/foreach})
のように、本来ならkeyname.id1 keyname.id2 keyname.id3というところを
内部のforeachのインデクサを配列の添字として使用したい。
何かいい方法ないものかなぁ?
0706nobodyさん
2006/11/04(土) 22:47:30ID:???てか多次元配列じゃなくね?
0707nobodyさん
2006/11/09(木) 04:09:53ID:???ロジック側でなんとかしる
0708nobodyさん
2006/11/10(金) 00:21:40ID:???veax.NET::役に立たないPHP拡張モジュール製作所
http://blog.veax.net/
面白そうなの見つけて注目中
0710nobodyさん
2006/12/02(土) 18:09:36ID:???{/section}
上記のような場合に
{section}間でcntに1加えた数字を使いたいと考えています。
どのようにすればいいでしょうか。
0711nobodyさん
2006/12/06(水) 13:53:37ID:???0713nobodyさん
2006/12/24(日) 18:38:33ID:???0714nobodyさん
2006/12/27(水) 17:09:35ID:???if ($hoge){}
と書いてたように
{if $hoge}{/if}
って言う使い方は出来ないんですよね?
(やってみたらうまく動きませんでした)
わざわざ別の変数を用意して
{if $check_hoge == 1}{/if}
みたいにしないといけないんでしょうか??
0715nobodyさん
2006/12/27(水) 19:30:22ID:???0718nobodyさん
2006/12/29(金) 17:59:05ID:Oa9zj9TG0719nobodyさん
2007/01/07(日) 17:56:17ID:lgQgqthI0720エスパー伊東
2007/01/07(日) 18:03:01ID:???0721nobodyさん
2007/01/08(月) 17:02:30ID:???html_tableとhtml_checkboxesを組み合わせて使うようなことはできますか?
0723nobodyさん
2007/01/08(月) 20:58:19ID:???スクリプトと同じ場所にコピーすれば実行できたんですが
この関数の名前のファイルを作ってpluginsフォルダに置いておけば
自動的に読み込んでくれたりできないんでしょうか?
今は置いたとしても
syntax error: block function 'html_table_block' is not implemented
とエラーが出てしまいます..
0724133
2007/01/12(金) 17:51:59ID:???Smarty error: [in hoge.html line 19]: syntax error: unrecognized tag: 投票
この場合、「投票」という文字を消すと動作します
0725nobodyさん
2007/01/12(金) 20:24:35ID:???取り合えず{literal}{/literal}で囲めば逃げられると思う
0726nobodyさん
2007/01/12(金) 22:28:58ID:3JXbZGmD俺はこれで解決したんだがどうよ
0727nobodyさん
2007/01/12(金) 22:39:25ID:???開始タグを<!--{ 終了タグを }--> にするとか。
0728nobodyさん
2007/01/16(火) 11:38:11ID:JtgOvcxU俺もなんかあったら面倒なのでそうしてる
ところで Smartyで改行(nl)を無効にする命令ってないのかな?
ヘッダーのキーワードをページごとに変更できるように 変数を入れてSmartyの
Sectionで挿入しようとしたんだけど ソースが改行されて汚い
tplファイルを改行ナシにしたらいけるんだろうけど それだとファイル変更時
にわかりにくくなるしなぁ
0730728
2007/01/16(火) 15:27:15ID:???str_replaceをはじめて知ったド素人にレス感謝です
調べたところstr_replaceって置換ですよね? 置換じゃ無理っぽい 多分
説明が悪かったかもしれないのでもう一度
Smartyのテンプレートファイルにおいて
<head>
<meta name="Keywords" content="…,…,…,…,
{if isset($keyword)}
{section name=keyword_no loop=$keyword}
{$keyword[keyword_no]},
{/section}
{/if}
…,…" />
</head>
0731728
2007/01/16(火) 15:27:49ID:???<meta name="Keywords" content="…,…,…,…,
キーワード1
キーワード2
…
…,…" />
と改行されてしまうのが嫌だなと言うことです
テンプレートファイル中で改行してることから それが原因だろうとは思う
のですが 改行ナシにするとテンプレートファイルを見ると汚くなるので
それは避けたいです
(今後他人に仕事を振る可能性もあるし)
で テンプレートファイル中の改行を 出力するHTML上では無効にすることが
出来る命令があればなぁと思ったのです
textformatで出来るかな? と思ったけど無理っぽいし…orz
0732nobodyさん
2007/01/16(火) 16:35:49ID:???0734nobodyさん
2007/01/17(水) 17:22:58ID:???0735nobodyさん
2007/01/17(水) 17:47:35ID:???0736nobodyさん
2007/01/17(水) 17:57:56ID:???こっち貼ってやった方がいいんじゃね?
つーか少しは自分で調べよう
0737nobodyさん
2007/01/17(水) 20:51:11ID:???WindowsXP+IIS5.1+PHP5.2+Smarty2.1.16 を使用すると、
以下のようなエラーが画面に表示されてしまいます。
URL:http://localhost/dash/test.php
Warning: Smarty::include(templates_c\%%D9^D9B^D9B21B55%%test.html.php)
[function.Smarty-include]: failed to open stream:
No such file or directory in C:\Inetpub\wwwroot\dash\libs\Smarty.class.php on line 1258
Warning: Smarty::include() [function.include]:
Failed opening 'templates_c\%%D9^D9B^D9B21B55%%test.html.php' for inclusion
(include_path='.;c:\php\includes;c:\php\PEAR;c:\php\smarty')
in C:\Inetpub\wwwroot\dash\libs\Smarty.class.php on line 1258
C:\Inetpub\wwwroot\dash\templates_c フォルダに
コンパイルされたphpファイルができません。
コンパイルができないみたいです。
WebサーバをApacheにするとうまくいくのですが…
Smartyを使用する場合、IISの設定で変更しなければいけない箇所があるのでしょうか?
0739nobodyさん
2007/01/18(木) 10:28:23ID:???0740nobodyさん
2007/01/18(木) 10:46:18ID:???特に設定する必要はないと思うけど
Smarty.class.php の _compile_resource メソッドがどんな動きをしているか
見たほうがいいかも
0741nobodyさん
2007/01/18(木) 14:39:41ID:???section内で$hoge[$foo]みたいなことしたいのですが、どのようにやれば出来ますでしょうか?
{section name="val" loop=$data}
{$hoge.$foo[val].name}
{/section}
でできませんでした…
0742nobodyさん
2007/01/18(木) 16:32:29ID:???キャッシのexpiresんとこのタイムスタンプ書き換えれば延ばせる
なぜそんなことがしたいのか分からないけど
0743nobodyさん
2007/01/18(木) 17:06:50ID:???{hoge}
と書いたら、php側のhoge変数の中が展開されると思いますが、
これを、
{hoge}そのものを出力したい場合、テンプレートにどう書けばよいでしょうか?
\{hoge\}
とか
{{hoge}}
とか試してみたんですが、無理でした…。
0744nobodyさん
2007/01/18(木) 17:26:18ID:???とか
0745nobodyさん
2007/01/18(木) 17:28:28ID:????は&ね
0746nobodyさん
2007/01/18(木) 17:32:04ID:???0747nobodyさん
2007/01/18(木) 17:48:50ID:???{hoge}
と出すのは無理すかね?
なぜかというと、これをファイルに出力して、またFlexyのテンプレートとして食わせたいのです。
>>746
{hoge}
を、通常通り置換したい場合もあるので、デリミタそのものを変えるのではまずいのです。
お二人ともレスありがとう。
説明不足ごめんなさい。
0748nobodyさん
2007/01/18(木) 18:26:03ID:u6x8DYYxオブジェクトの生成をし、
Smartyのassign関数にアクセスするメソッドを利用しようとすると、
Fatal error: Call to a member function assign() on a non-object
in C:\Program Files\Apache Group\Apache2\htdocs\test\index.php on line 7
と返されてしまいます。
ならべく、テンプレート内にPHPを書きたいのですが、
(本来のSmartyの利用意図に背くのは重々承知です。)どうすればよいでしょう。
--index.php
<?php
require_once('Smarty/libs/Smarty.class.php');
class Headline{
public $oSmarty;
public function __construct($oSmarty){$this->oSmarty=$oSmarty;}
public function get_data(){$this->oSmarty->assign("test","テスト");}
}
$oSmarty=new Smarty();
$oSmarty->template_dir='./templates/';
$oSmarty->compile_dir='./templates_c/';
$oSmarty->display('test.tpl');
?>
--test.tpl
test
{php}$oHeadline=new Headline($oSmarty);$oHeadline->get_data();{/php}
{$test}
0750nobodyさん
2007/01/18(木) 19:06:24ID:???> {php}$oHeadline=new Headline($oSmarty);$oHeadline->get_data();{/php}
new Headline($GLOBALS['oSmaert']);
ってするとどうだろう。
0755743
2007/01/18(木) 20:33:24ID:???でも、まぁ意味はそういうことです。
Smartyでいうところのそれに当たるものが、HTML_Template_Flexyでありませんか?
ってのが聞きたかったんです。
なんか無さそうな雰囲気ですね…。
0756nobodyさん
2007/01/18(木) 20:59:51ID:oKlCOyd1<?xml version="1.0" encoding="EUC-JP"?>
このように、XML宣言の前に関数を使うと、XML宣言の前に
空行が出力されてしまいます。これはXHTMLにおいて致命的な文法エラーになってしまいます。
smarty_header関数は header() でHTTPヘッダを出力するだけだし、
プラグインファイルは終了タグの '?>' を省略しているので文字列は出力していないはずです。
コンパイルされたファイルを見てみたら以下のようになっていました。
<?php echo smarty_function_smarty_header(array('http_equiv' => "Content-Type",'content' => "text/html"), $this);?>
<?php echo '<?xml'; ?>
version="1.0" encoding="EUC-JP"<?php echo '?>'; ?>
0757741
2007/01/18(木) 21:21:15ID:???お願いいたします
0758nobodyさん
2007/01/18(木) 21:57:19ID:???> {section name="val" loop=$data}
> {$hoge.$foo[val].name}
> {/section}
{$hoge[$foo[$val]].name}
でどぉだ。
>>749では完全に寝惚けてて、>>750でもtypoしているグダグダな状態なんで
イマイチ思いだせんのだが、これでダメならバッククォートを使ったりかどうかで
出来たはず。
0759nobodyさん
2007/01/19(金) 00:36:20ID:???多分無理だと思う。メソッドを介した方が早いんじゃない?
function p($flexyVar) { return "{". $flexyVar ."}"; }
{p(#hoge#)}
{p(#hoge.bar:h#)}
##の中に#だけはどうやっても書けないから、
メソッド呼び出しを書きたいならもう少し工夫が要るけどね。
0760nobodyさん
2007/01/19(金) 02:12:14ID:???header();ってどこに書いてもよかったような気がするんだけど
1行目と2行目を入れ替えるのはだめ?
だめなら改行せずにxml宣言も1行目に書くか{strip}{/strip}
stripが誤作動するならliteralで
0762nobodyさん
2007/01/21(日) 17:04:32ID:???0763nobodyさん
2007/01/21(日) 18:54:55ID:???この辺かな?
テンプレートそのものをサニタイズしたいのならちょっと仕掛けが必要かも
0764nobodyさん
2007/01/21(日) 18:58:33ID:???0765nobodyさん
2007/01/21(日) 19:04:19ID:???再度で申し訳ありませんが、foreachを使っているせいか
Warning: htmlentities() expects parameter 1 to be string, array given
となって表示されませんでした・・・。
{$hoge}と出しているところだけエスケープしたいのですが、そういう方法はあるんでしょうか?
0766nobodyさん
2007/01/22(月) 01:04:33ID:???Smartyにサニタイズさせたいのなら普通に修正子を指定するか、nodefaultsを使うか
ソースいじってdefault_modifiersの挙動を変えるかしかないと思う
0768nobodyさん
2007/01/22(月) 09:02:22ID:???自動でHTMLエスケープするってのは良くないような
必要ないもんにまでかけちゃうし無駄なオーバーへッドにもなるし
0769nobodyさん
2007/01/22(月) 13:06:55ID:???皆さんありがとうございます。
とりあえず自分で修正子作ってやってみます。
ちなみにこういった方法は一般的ではないんでしょうか?
0770nobodyさん
2007/01/22(月) 16:09:32ID:???凄く単純な事ですが、いろいろ調べたのですが、どうしても実現できなくて質問させていただきます。
テンプレートから外部テンプレートを組み込む時に、
{include file="/root/dir/html/templates/XXXX.tpl"}
といった感じに記述しますが、この中で、変数を使いたいのです。
"/root/dir/html/templates/"の部分を変数に変えて、ディレクトリ構造を一元化して管理したいのです。
PHPの構造でいうと、"{$base_dir}/XXXX.tpl"と言った感じで、
ディレクトリ構造が変わっても、ファイルを直接弄ることなく、変更できるようにしたいのですが、やり方がわかりません。
つまり、呼び出し元のPHPプログラムで設定ファイルを読み込み、テンプレートの保存されているディレクトリ構造を読み取り、
それをテンプレートファイルに渡して、その渡した値を元に外部テンプレートを呼び出すようにしたいのです。
これを実現するには、どのように記述したらよろしいのでしょうか?
0771nobodyさん
2007/01/22(月) 16:18:33ID:???ディレクトリ構造の値は配列で渡したいのです。
$dir['base']="/root/dir/html/templates";
$smarty->assign("dir",$dir);
と言った感じでわたして、テンプレートの中で
{include file="$dir['base']/XXXX.tpl"}
と言った感じで仕様したいのですが、上記のコードを書くと以下のエラーが出て使えませんでした。
Warning: Smarty error: unable to read resource: "Array['base']/header.tpl" in /xxx/yyy/html/libs/Smarty.class.php on line 1095
根本的な記述方法の間違いかもしれませんが、宜しくお願いいたします。
Apache2
PHP5
Smarty2.6.16
の環境で勉強しております。
0772nobodyさん
2007/01/22(月) 17:04:54ID:???0773nobodyさん
2007/01/22(月) 17:41:46ID:???すみません。それでも同じエラーが出てしまいます。
dir.base
Warning: Smarty error: unable to read resource: "setting.base/header.tpl" in /xxx/yyy/html/libs/Smarty.class.php on line 1095
$dir.base
Warning: Smarty error: unable to read resource: "Array.base/header.tpl" in /xxx/yyy/html/libs/Smarty.class.php on line 1095
0774nobodyさん
2007/01/22(月) 18:16:45ID:Eh2tk1di{include file="`$dir.base'/xxxxx.tpl"}
`(バッククォート)で $dir.base をくくらないと、どこまでが変数か
Smarty が解釈できなくなっている
0775nobodyさん
2007/01/22(月) 18:17:38ID:???0777nobodyさん
2007/01/22(月) 18:19:08ID:???ありがとうございます。
無事、実行できました。
いろんなサイトを見て回ったのですが、バッククォートのことは初めて知りました。
本当に勉強になりました。ありがとうございました。
0779nobodyさん
2007/01/22(月) 18:21:56ID:???http://sky.freespace.jp/smarty/SmartyManual_2-6-7J_html/language.syntax.quotes.html
0780nobodyさん
2007/01/22(月) 18:26:12ID:???すみません。。。お返しする言葉もございません。
そのマニュアルも一応目を通したつもりでいたんですが、、、
日々精進していきます。
0781nobodyさん
2007/01/23(火) 13:44:19ID:???このスレにPHPのイロハも知らないバカが押し寄せてくる悪寒が…
0782nobodyさん
2007/01/23(火) 21:29:12ID:???0783nobodyさん
2007/01/25(木) 04:27:39ID:???こういう場合でフォーム系のタグに変数埋める作業でもやはりシコシコと手作業するしかないんでしょうか。
宜しくお願い致します。
0786nobodyさん
2007/01/26(金) 20:07:41ID:???{$hoge[$foo->getId()]}
とやると
syntax error: unrecognized tag:
が出るのですが,このようにやりたい場合はどうすればいいでしょうか?
0787nobodyさん
2007/01/26(金) 20:10:51ID:iZlZkVla0788nobodyさん
2007/01/27(土) 10:35:51ID:e0oRsoDRまんどくせえけど
0789nobodyさん
2007/02/02(金) 12:06:02ID:???バックスラッシュは試したんだけど $`hogehoge`と囲ってたのでエラーでした
まさか`$hogehoge`とするとは… PHPでは${hogehoge}なのに…
>>770とそれに回答していただいた皆さんに感謝です
0790789
2007/02/02(金) 12:16:25ID:???○バッククォート
…なんて勘違いを…アホですいません
0791nobodyさん
2007/02/02(金) 15:29:41ID:???0792nobodyさん
2007/02/02(金) 22:13:51ID:???0793nobodyさん
2007/02/02(金) 22:30:25ID:???PHPのコードをベタ書きすれば使える
なるべくロジックをテンプレートに入れないように
処理を変える方がいいと思うけどな
0794nobodyさん
2007/02/02(金) 22:38:39ID:???それはロジック側や構成を見直した方が良いっていう警告
0795nobodyさん
2007/02/02(金) 22:42:07ID:???0796nobodyさん
2007/02/02(金) 23:07:42ID:???テンプレートパーツ名を決めて、メインのレイアウトテンプレートから
includeするファイルを変えるとか色々方法あるんじゃない?
0797nobodyさん
2007/02/03(土) 01:08:18ID:???モデルから引っ張ってくるかのどちらかじゃね。
ビューで切り替えるもんじゃないような気がするが。
0798nobodyさん
2007/02/06(火) 20:28:11ID:adz0uOuqいま、phpBBのソースコードを解読・勉強していて疑問になりました。
0800nobodyさん
2007/02/15(木) 19:29:02ID:t/XW6gI0(3 + 2) * 5
みたいな感じなんだけど。
0801nobodyさん
2007/02/15(木) 20:54:32ID:???0802nobodyさん
2007/02/16(金) 10:58:20ID:qBGQeHi7それがうまくいかないんですよね。
{if '($smarty.foreach.loopname.iteration-9)%3'==0}
こんな感じで処理を行いたいんのですが。
0804800
2007/02/16(金) 11:16:20ID:qBGQeHi7{if ($smarty.foreach.hobbyloop.iteration-9)%3==0}
自分の勘違いだったぽい。レスサンクスでしたー。
0805nobodyさん
2007/02/22(木) 22:23:52ID:???テンプレートファイルに
{if $item <0} 〜HTML〜 {/if}
って書くのと
<?php if($item <0 ){ ?>
〜HTML〜
<?}?>
って書くのと、基本的にテンプレートの中身は変わらない事無いか?
WEBデザが使いやすいだろうと思ってSmartyでデザインとソースを分離
しようと思ってたんだけど、テンプレートにSmartyのソースが入るんだから
やっぱり、PHPの知識がいるわけで、普通にPHPのソース書くのと違わない
気がするんだけどな・・・。他にメリットある?
0806nobodyさん
2007/02/22(木) 22:25:33ID:???>WEBデザが使いやすいだろうと思ってSmartyでデザインとソースを分離しようと思ってたんだけど
もうわかっただろ?それをやるにはSmartyだけじゃ無理だって事だ。
0807nobodyさん
2007/02/22(木) 22:35:26ID:???うっかりロジック部分を触って壊したりしないかと常々おびえてて、
そんでsmartyの勉強始めたとこです。
今は1by1の分業体制だけど、これから人増やす可能性も高いので
コード側やってる相方さんも、自分がざっくりphpでプロト書いて
俺にデザインをつけさせる、という路線だとメンテ性とか可読性の面で
もう限界だと思っているみたい。
逆に言えばそういうコラボ体制とかでなければ、php直書きのほうが
効率いいのかもしれないなあ。
0808805
2007/02/22(木) 22:45:21ID:???デザ側の立場として質問なんだが、
>うっかりロジック部分を触って壊したりしないかと常々おびえてて、
って書いてるけど、現在は勉強してある程度PHP使えるようになったの?
それとも、完全にソースの部分は触らないようにしてるの?
だいたい、テンプレートと言ってもヘッダーとフッターを分けてincludeする
ようにしている場合が多いし、そんなんじゃ、Dreamweaverでも編集しづらいし、
デザ側のメリット無いと思うんだよな。
他スレとかでやたらこういう話が出てきたり、オブジェクト指向とか言われるけど、
それが他の人間と共同作業する上で、本当に役立つのか疑問に思えるんだよ。
もちろん、出来て困らないだろうけど、807のように、スキルを学ぶ必要あるしさ。
0809nobodyさん
2007/02/22(木) 23:11:43ID:???一応変数追っかけてデバッグとか、DB自体のフィールドを増やさないような
簡単な書き足しぐらいはしてます。でも、やっぱりphpのソースのなかに
丸裸でいろんなものが散らばってるのは神経使います。冒頭に分離されてるなら
まだマシだけど、if文で配列をあるだけテーブル化して表示、みたいな奴だと、
html部のど真ん中に来ちゃいますし。
トラブルが起きたときにどっちが悪さしたのかわかりにくいし、片方が
(他人もDWで編集していることを前提にコラボ系機能が作り込まれている)
DWで、もう片方がテキストエディタで「同じファイルを」いじる、というのも、
作業的にはちと筋が悪いと思ってます。
includeは積極的に使っていきたい仕掛けではありますが、確かに
CSSベースでもテーブルベースでもDWでの編集が困難になるのですよね。
「head部はinclude・その他はDWのライブラリ」というスタンスの方が
web系の人員を増員する方針で考えるなら、むしろ好ましいのかな。
0810nobodyさん
2007/02/22(木) 23:19:43ID:???でも、テンプレートタグはHTMLデザイナ向けに簡単な設計となっているはずだから
PHPコードをベタ書きするよりはマシかなって。
0811nobodyさん
2007/02/22(木) 23:44:06ID:???なるほど。ま、やっぱりデザイナー側も勉強する必要はあるって事だな。
>>810
>>805のようなソースの場合、べた書きするのと、{}で囲ってsmarty方式に
するのと、違いがあんまり無いと思うんだよな。
まぁ、forearchとかsmarty方式の方がソースは短くなるけどさ。
0812nobodyさん
2007/02/23(金) 01:12:03ID:???そうそうあんまり変わらないと思う。むしろ「 { 」入れてエラー出て困ってたデザイナさんも居た。
でもhtmlソースに出ない{* 〜 *}形式のコメントは活用できると思う。
0813nobodyさん
2007/02/23(金) 01:15:09ID:CtBpLmme0814nobodyさん
2007/02/23(金) 01:43:49ID:???うちの場合ケースバイケースだけど
表示するか否かというフラグを渡しておいて
{if $hasItem}表示内容{/if}
と出来るようにしたり
条件が複雑だったりよく使うような物だったら
ブロック関数作って
{logined}
ログイン時用の表示
{/logined}
みたいに出来るだけ単純に書けるようにしてるよ
オーサリングツールとの連携は難しいね
Flexyとかだとなんとかなるのかなと思うけど
0815nobodyさん
2007/02/23(金) 14:43:40ID:???何倍も遅いって聞くんだけど、そんなに大きな差があるの?
0817nobodyさん
2007/02/23(金) 15:03:37ID:CtBpLmme我慢できなきゃ、Zend Optimizer入れれば。
0818nobodyさん
2007/02/26(月) 01:47:05ID:???テンプレートでCSVファイルを作り、それをダウンロードさせるようなことがしたいのです。
少し上の方に書いてあったsmarty_headerという関数をテンプレートに埋込んでみたのですが、
エラーが発生(関数が存在しない)し、使うことができませんでした。
0820nobodyさん
2007/02/26(月) 11:17:58ID:???>エラーが発生(関数が存在しない)し、使うことができませんでした。
プラグイン関数用ディレクトリのパスが通ってないだけだろ。
0821nobodyさん
2007/02/26(月) 11:23:33ID:???上のやつは自分で作ったプラグイン例としてsmarty_headerって
書いていたと思う
0822756
2007/02/26(月) 12:08:17ID:???とてもシンプルなプラグイン:
{smarty_header http_equiv="Content-Type" content="application/octet-stream"}
{smarty_header http_equiv="Content-Disposition" content="attachment; filename=myfile.csv"}
私が定義した関数です。
plugin/function.smarty_header.php
function smarty_function_smarty_header($params)
{
header("{$params[http_equiv]}: {$params[content]}");
}
0823818
2007/02/27(火) 02:39:59ID:???ですが作成されたファイルの内容がブラウザに表示されるだけで、ダウンロードのダイアログは表示されませんでした。
エラー文言ですが、
Warning: Cannot modify header information - headers already sent by 〜
と表示されます。
エラー文言が表示されることで既にHTTPヘッダが出力されてしまったのかもしれないとおもい
php.iniのdisplay_errorsをOffに倒して実行してみましたが、変わりませんでした。
やはり無理なのでしょうか。
0824nobodyさん
2007/02/27(火) 03:10:33ID:???http://jp2.php.net/manual/ja/function.header.php
0825756
2007/02/27(火) 07:35:44ID:???{smarty_header ...} は文字を出力する前に呼び出さなくちゃだめだよ。
> 覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは
> PHP からの出力にかかわらず、すべての実際の出力の前にコールする必要があることです。
> 頻出するエラーとして、include() または require() 関数、他のファイルをアクセスする関数に
> 空白または空行があり、header() の前に出力が行われてしまうというものがあります。
> 同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。
0826818
2007/02/27(火) 23:11:30ID:???>>825
ありがとうございます。
>頻出するエラーとして、include() または require() 関数、他のファイルをアクセスする関数に
まさにこれでした。
824さんが提示してくださったページは知っていたのですが、理解していませんでした。
あと皆さん、smartyとは関係のない質問をしてしまい済みませんでした。
0827nobodyさん
2007/03/01(木) 09:32:48ID:???英語が苦手でなければ、こんなのはどう?
ttp://www.kuwata-lab.com/kwartz/
こんな感じでhtmlとphpを分離できる。
ttp://www.kuwata-lab.com/kwartz/img/fig01.png
ttp://www.kuwata-lab.com/kwartz/kwartz3php-users-guide.01.html#example1
0828nobodyさん
2007/03/01(木) 12:42:20ID:???0830nobodyさん
2007/03/02(金) 00:57:05ID:???ただ、痒い所に手が届かないが。
0831nobodyさん
2007/03/02(金) 09:43:20ID:???そこの人、日本人だから以前は日本語のドキュメントもあったぞ。
今は無いみたいだが。
一年前使ってみた感想は、時期尚早って感じだったかな。
メインはrubyみたいで、phpのサポは片手間って感じ。
ドキュメントに書いてあるのに実装してない構文とかも確かあったし。
(and preg_matchの配列の渡し方を間違えて、毎回初期化してるんで動かなかったりしたのを修正したのを覚えてる。)
>>830
Flexyは結構面白いんだが、「構文解析が出来る」ものだから、かなり無茶な構文を定義しているような感じがする。
以前いじった時は、スタイルシートで{hoge:fuga}のように最後のセミコロンを省略したりした場合、
Flexyのプラグインを見に行ったような・・・
これまた1〜2年前にいじったきりなんだが修正されたのかな?
0832nobodyさん
2007/03/06(火) 03:51:50ID:???みなさんははどのように作ってますか?
(仮にSmarty使用として)
1. 各コンテンツ.tplから、ヘッダ、フッタ、ナビをconfigから置換。
2. 各コンテンツ.tplから、ヘッダ.tpl、フッタ.tpl、ナビ.tplを読込み。
3. 全体デザイン.tplから、ナビ.tplとコンテンツ.tplを読込み。
4. 全体デザイン.tplから、コンテンツ.tplを読込み、
コンテンツ.tpl内でさらにナビ.tplを読込み。
┌─────────────┐
│ ヘッダ(静的) │
│┌─┐┌────────┐│
││ナ││ ページごとの ││
││ビ││ コンテンツ(動的) ││
││ ││ ││
││静││ ││
││的││ ││
│└─┘└────────┘│
│ フッタ(静的) │
└─────────────┘
私は全体のデザインを作ってしまって、
中身だけ入れ換える方式(上記3、4)が好きなのですが、
デザイナーにとっては、ファイル構成が直感的で
無くなるような気もします。
みなさんはどうしてるか参考までに聞かせてください。
0834nobodyさん
2007/03/06(火) 08:01:34ID:???デザイナーはhtmlベースな状態で管理を行って
デザインに更新があったらその都度プログラマが
変更点を確認して実際のテンプレートファイルに
手を加えるってのが一般的なんじゃないの
直感的なファイル構成にこだわる必要なんて無いと思うぜ
0835nobodyさん
2007/03/06(火) 08:53:16ID:???全体デザイン.tpl に読み込む中身.tpl を選択する
分岐入れるってこと?
俺は良く2のパターンで作るなぁ。
デザイナさんに各ページをHTMLで作ってもらって
基本的にはそれを.tplに置き換えてから手を加える感じ。
0836GoA ◆J2EE.GplLk
2007/03/06(火) 09:46:08ID:???俺はナビ部分が完全静的の場合なら、1をよくやるな。
正確に言えば、全体デザイン.tplからヘッダ・フッタ・ナビを完全固定状態で…って感じだけどな。
でも、ナビも動的にする場合がおおいので、結果として、3みたいな感じになることがおおい。
0837nobodyさん
2007/03/06(火) 10:15:32ID:???各コンテンツ.php内でコンテンツtpl名を変数に割り当てindex.tplを読み込み
index.tpl内で静的なヘッダ・フッタ+動的なコンテンツtplを読み込み
って感じ?(ナビ略)
0838nobodyさん
2007/03/06(火) 12:16:59ID:25mpWck5{section ... start=`($foo.bar-1)*($smarty.const.CONSTANT)` ...}
このようなエラーが出ました:
Fatal error: Smarty error: syntax error: $smarty. is an unknown reference
これはどうしたらよいのでしょうか?
0839838
2007/03/06(火) 12:36:12ID:25mpWck5悪いので、スクリプト側で計算させてテンプレートに振り分ける方が良い」という
ことが書いてあったのでそうします。
0841nobodyさん
2007/03/06(火) 14:33:09ID:???私の場合は、各アクションの最後にどのコンテンツtplを使用するか送るようにしてる
メニューの部分は、全アクションに継承されたクラスのコンストラクタか、
アクション終わってからセットかな。もしくはtplから直読み。
0842nobodyさん
2007/03/06(火) 14:36:46ID:???読み込む場合は{include file=$contpl}って感じね。
0843nobodyさん
2007/03/06(火) 15:39:31ID:???>>833-837,840-842
ありがとうございます。
デザイナ側からの視点だとまた違うんでしょうが、
プログラマ側からでは、3が多数という感じですね。
普段こういった事を同業に聞くこともないので
面白かったです。
0844nobodyさん
2007/03/09(金) 15:28:36ID:???ほぼ全部のテンプレートを変更しなきゃいかんよね?
(DWのテンプレ機能とかはおいといて)
文章が分かりづらくてスマソ…。
0845nobodyさん
2007/03/09(金) 15:32:27ID:???0846nobodyさん
2007/03/09(金) 16:00:37ID:???んなわきゃない
ヘッダやフッタに変更があってもレイアウトテンプレートを修正するだけだ
どう勘違いしてるんだ?
0848844
2007/03/09(金) 16:44:05ID:???まず全体ページ(例:all.tpl)を呼んで、その全体ページ(all.tpl)のなかで{include 各コンテンツ}を
呼ぶってことでしょうか?
0849nobodyさん
2007/03/09(金) 17:15:08ID:???0852nobodyさん
2007/03/10(土) 10:44:25ID:GgSEfqVF{${$loop[loop].name}}
{$$loop[loop].name}
という2つはエラーになりました。
0853nobodyさん
2007/03/10(土) 11:30:55ID:???最近Smarty使ってねえから間違ってたらすまんな
0854852
2007/03/10(土) 11:44:36ID:GgSEfqVFありがとうございます。
しかしちょっとそのやり方がわからないです。
具体的には
$loop[0]['name'] = "a40";
$loop[1]['name'] = "a43";
$loop[2]['name'] = "a58";
のように数字が続いています。
で、sectionの中で
{$a43}や{$a58}などの変数を呼び出したいのですが、どうもうまくいきません。
section が複雑にネストしてるので配列で渡すのはちょっと無理っぽいので、可変変数でなんとかしようと思った次第です。
0855nobodyさん
2007/03/10(土) 11:48:12ID:???{$var}.cde
という文字列を使いたいのですが、どのように記述すればいいでしょうか?
{if $var.cde == .....
では$varの配列とみなされてしまうようです。
0856855
2007/03/10(土) 11:49:03ID:???smartyです。
0857nobodyさん
2007/03/11(日) 14:03:45ID:???そういうことか。無理なんじゃないかな。
定数値であれば、$smarty.const.$hoge で取れるんだが、
そんな方法で変数参照出来たら、逆に危なくて仕方ないしな。
設計から見直したまえ。
0858nobodyさん
2007/03/11(日) 14:08:45ID:???// $smarty->assign('var', 'ab');
{assign var="str" value=$var|cat:"cde"}
{if $str == "abcde"}ok{/if}
0859nobodyさん
2007/03/13(火) 22:56:37ID:QJkFtOhTなんで、俺だけ出ないのか教えてくれ。
0860nobodyさん
2007/03/13(火) 23:31:57ID:???0861nobodyさん
2007/03/16(金) 21:09:00ID:???0862nobodyさん
2007/03/18(日) 02:13:43ID:???smartyのテンプレ作成をutf8でお願いしますとデザイナに頼んだら、
「DWの設定まんどくさだから、sjisじゃなきゃダメ」と言われたので
smartyのautoload_filtersで、sjisテンプレをコンパイル時にutf8変換してます。
php(utf8) ← DB(utf8)
↓
smartyテンプレ(sjis) → smartyコンパイル(utf8) → 画面出力(sjis)
このように、すごーく無駄な文字コード変換が2回も入ってしまいます。
なんか他にいい方法ないでしょうか?
0863nobodyさん
2007/03/18(日) 02:43:21ID:CdbythRUassign時にShift_JISに変換すればいいと思う。
php(utf8) ← DB(utf8)
↓
assign
↓to sjis
smartyテンプレ(sjis) → smartyコンパイル(sjis) → 画面出力(sjis)
Smartyの仕組みは知らないけど、assign時にコールバック処理を入れられるな
らそれを使えばいいし、無ければSmartyのラッパークラスを用意すればいい。
0865nobodyさん
2007/03/18(日) 08:53:47ID:???頻繁に更新するものじゃなかったら、>>862さんがutf8にコンバートするとか。
0866nobodyさん
2007/03/18(日) 09:12:45ID:???往復ビンタしてから
男から殴れ女なら犯せ
0867nobodyさん
2007/03/18(日) 16:01:57ID:???>>864の通りデザイナにUTF8で書いてもらうのが一番良い。
デザイナがだめならクライアントかディレクターあたりに「余計なコストがかかる事になりますが…」
とか言ってデザイナがUTF8で書かざる終えないようにがんばれ。
0868nobodyさん
2007/03/18(日) 16:02:47ID:???0869nobodyさん
2007/03/18(日) 18:11:10ID:???0870nobodyさん
2007/03/18(日) 18:17:59ID:???これがある日本はハンデやで。
0871nobodyさん
2007/03/18(日) 20:08:33ID:???smartyテンプレ(sjis) → smartyコンパイル(utf8)
はテンプレートが更新された後の初回アクセスだけですむから大した負荷にはならないだろ。
0873nobodyさん
2007/03/19(月) 11:20:58ID:???ただ、文字コード変換するくらいでぐだぐだ言うようなデザイナは、勉強不足だと思う。
一息に切れ
0874nobodyさん
2007/03/20(火) 09:13:18ID:???0875nobodyさん
2007/03/20(火) 13:33:39ID:???>smartyのテンプレ作成をutf8でお願いしますとデザイナに頼んだら、
>「DWの設定まんどくさだから、sjisじゃなきゃダメ」と言われたので
ええーっ
とりあえずおまいさんが『Dreamweaver 文字コード』でぐぐって、DWの設定を教えてあげればいいじゃない。
つかその程度のこともできないデザイナなんか切れ。
0876nobodyさん
2007/03/20(火) 23:01:26ID:???0879nobodyさん
2007/03/21(水) 18:15:49ID:???自在にSmartyを使えるようになる頃には、自分で template 作れるようになる。
で、その頃になると、Smartyに粗が見え出すんだ。
まぁ、という訳で自作テンプレート使ってる。
0880nobodyさん
2007/03/21(水) 20:52:08ID:NvhysGYmどう考えても、Smartyの方が優れてそうだけどなw
0881nobodyさん
2007/03/22(木) 12:42:30ID:???まぁ、その通りだ。
だが、smartyはでかいし機能がありすぎる問題がある。
下手に機能があると、テンプレートに頼りすぎて、どこまでがviewか?とかが崩れるんだ。
シンプルな方が楽だし早いんだよ。
0882nobodyさん
2007/03/22(木) 13:21:33ID:???PHPでやったほうがわかりやすい。
0883nobodyさん
2007/03/22(木) 14:34:43ID:jPF/zj000884nobodyさん
2007/03/22(木) 15:12:30ID:???0886nobodyさん
2007/03/22(木) 17:40:02ID:9EeeeROG0887nobodyさん
2007/03/22(木) 18:13:08ID:???0889nobodyさん
2007/03/22(木) 23:53:41ID:???DBに接続してデータとって来るような場合
キャッシュがあればDBいかないで表示したり。
テンプレート内のカウンタとか一部のプラグイン部分だけはキャッシュじゃなくて動的にしたい
とかも出来るから結構便利よ。
0890nobodyさん
2007/03/23(金) 01:25:37ID:wrH2dhw40893nobodyさん
2007/03/23(金) 14:57:53ID:wrH2dhw40894nobodyさん
2007/03/23(金) 16:54:26ID:???簡単に言うと、ある一定時間内ならキャッシュを出力してDBアクセスを抑制できる仕組み。
http://sky.freespace.jp/smarty/SmartyManual_2-6-7J_html/caching.html
例を挙げれば
・10分ごとに最新情報がでればいい
・100view/分
・クエリ発行数 7/view
というコンテンツがあった場合
キャッシュなし→700query/分
キャッシュあり→0.7query/分
となりDB負荷が大幅に下がる。
0895nobodyさん
2007/03/24(土) 21:37:49ID:???もしそうなら、ページ全体のキャッシュはできても部分キャッシュはできないということ?
0896nobodyさん
2007/03/24(土) 22:03:13ID:???キャッシュのキーはテンプレートのパスとdisplay関数やfetch関数の第2引数として指定できるキャッシュID
マニュアル嫁と。
0897nobodyさん
2007/03/25(日) 01:25:25ID:???0898nobodyさん
2007/03/25(日) 04:42:25ID:UfKh4Z0S細胞図
0899nobodyさん
2007/03/25(日) 13:19:14ID:???新規で受注したPHP案件は無理やりでも導入してるぜ
改造案件で昔の担当したアホがスパゲティってるときだけ使わん。
0900nobodyさん
2007/04/03(火) 12:34:20ID:???{foreach from=$arr item=item key=key}
{$item.hoge|@count}
{/foreach}
連想配列の要素数は上記で取得出来るのですが、要素数を交えた演算が出来ずに困ってます・・・
感覚的に
{$item.hoge|@count * 4 + 1}
というような書き方をしたいのですが・・・どうかお助けください
0901nobodyさん
2007/04/03(火) 12:36:53ID:???0903nobodyさん
2007/04/03(火) 13:46:55ID:???0904nobodyさん
2007/04/03(火) 13:49:53ID:???0905nobodyさん
2007/04/03(火) 14:14:52ID:???$arr = array("hoge"=>array(0,1,2,3));
{foreach from=$arr item=item key=key}
{math equation="n*4+1" assign="mResult" n=$item.hoge|@count}
{$mResult}
{/foreach}
0906nobodyさん
2007/04/03(火) 21:35:12ID:???繋がる?
0907nobodyさん
2007/04/04(水) 10:05:10ID:???0908nobodyさん
2007/04/05(木) 22:15:57ID:Wh1vrSjM同じ様な事を経験した方っていますかね?
コンパイル済みのファイルの時点でなくなってる感じです。
ちなみにSmartyのバージョンは2.6.6です。
0909nobodyさん
2007/04/05(木) 22:20:02ID:???0910nobodyさん
2007/04/06(金) 09:59:56ID:???0911908
2007/04/06(金) 18:35:57ID:???>>910
そうですかぁ・・・。
ちなみに他のサーバーで実行すると{literal}〜{/literal}の中身は表示されます。
php.iniとか環境の違いでsmartyの挙動って変わるんですかね?
0912nobodyさん
2007/04/06(金) 18:36:45ID:???0913nobodyさん
2007/04/07(土) 16:48:58ID:mKHEPGiv結構メンドクサイねw
バシバシ実用してる人、みんなはそのメンドクサさを乗り越えた甲斐があった?
圧倒的に効率的?
0914nobodyさん
2007/04/07(土) 16:53:13ID:???0915nobodyさん
2007/04/07(土) 17:50:05ID:???使いたいSmarty変数は
assign display include sectionです。
0916nobodyさん
2007/04/07(土) 18:48:36ID:???デザイナが構文覚えるのは多少苦労すると思うけど
殆ど一般的な式だから、プログラミングやった事があるならすぐに飲み込めると思うが。
むしろ、Switchつかいてぇ・・ぐらい思うんじゃねw
0919nobodyさん
2007/04/07(土) 19:00:45ID:1Ng7rNgy$params['e-mail']
だったとき、どのようにすれば表示できるのでしょうか?
{$params.e-mail}
だと、$params.eマイナスmailと解釈されるのか解りませんが、’0’になります。
0920915
2007/04/07(土) 19:03:49ID:???Smarty_Compiler.class.php
internals/core.create_dir_structure.php
internals/core.get_include_path.php
internals/core.write_compiled_resource.php
internals/core.write_file.php
が最小でした。
Smarty.class.phpやSmarty.compiler.class.php内の関数を削除できればもっと省けそうだけど、めんどいですね。
0922nobodyさん
2007/04/07(土) 19:20:46ID:1Ng7rNgyPHPはよく知っていて、わざわざまたSmarty使うのにまた、新しい文法覚えるのってどうなのよ、って感じはするよね。
例えばforeachなんてPHPのはマニュアル見なくてもスラスラかけるけど、
つい最近まで、あれ?item=だっけ?form=だっけ?as?みたいに、良くわからなくなって
マニュアル(というか、他で使ってるところ)みて、コピペしてた。
まあ、でも、>>916さんのいうように、PHP(なり、何か他のスクリプト)解ってるなら特に難しいことないけど、面倒なのは面倒だね。
全部自分一人でするなら、必要ないかも。
Viewの部分の分離なら、PHPだけでも出来るし。
でも、スクリプト知らないデザイナさんなどに覚えてもらうのに楽なのかな?
とはいえデザイナもSmarty覚えるよりPHP覚えた方が、後々役に立ちそうだから微妙だよね。
俺がsmarty使う理由は、デリミタが簡潔でHTMLが綺麗に見えるから。
dreamwearverのデザイナビューでも、わりとエラーにならずにレンダリングされるし。
if文の使い勝手が微妙だけど、プラグイン自分で書くって言う手もあるし。
0923nobodyさん
2007/04/07(土) 19:24:40ID:1Ng7rNgyおれもそんなわけないと思ったけどなるんだよね
0に
Smarty-2.6.18なんだけど・・・
バグかな?
0926nobodyさん
2007/04/07(土) 20:16:16ID:???同じname使うだけでパースエラーとかありえない。
将来的にformのnameかIDでグループ分けしてパース出来るようになるのだろうか。
0927nobodyさん
2007/04/08(日) 02:44:07ID:???0928923
2007/04/09(月) 08:46:20ID:45uRynI3わざわざテストありがと
>>927
ですね。
もういっっこおかしなところ発見したんですけど、暇な人いたらテストしてもらえませんでしょうか?
/////////////PHP//////////
<?php
require('libs/Smarty.class.php');
$errors['user_name'][]="必須です。";
$errors['user_name'][]="必須です。";
$errors['user_pass'][]="必須です。";
$errors['user_pass'][]="必須です。";
print_r($errors);
$smarty=new Smarty;
$smarty->compile_dir="templates_c";
$smarty->template_dir="";
$smarty->assign('errors',$errors);
$smarty->display('smarty.html');
?>
0929923
2007/04/09(月) 08:47:41ID:45uRynI3/////テンプレート///////////
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
{foreach from=$errors.user_name item=errors}
{$errors}<br>
{/foreach}
<br><br>
{foreach from=$errors.user_pass item=errors}
{$errors}<br>
{/foreach}
</body>
</html>
これをUTF-8で保存して表示すると2度目のループが文字化けしません?
うちの環境の問題ですか?
0930923
2007/04/09(月) 08:49:17ID:45uRynI3変数名(添字)のuser_nameやuser_passをfoo、barでやると文字化けしませんOTZ
0931nobodyさん
2007/04/09(月) 10:26:24ID:???むしろPHPで-がエラーにならないことに驚いた
マニュアルではだめってなってるし
さらに-を使うことにも驚いたけど
0933nobodyさん
2007/04/09(月) 23:39:29ID:45uRynI3ありがとうございます。
そうですね
おっしゃるとおり
さっき実験してて気づきました。
なぜか変数のスコープを勘違いしてました。
すんません。はずかしいです。
0934nobodyさん
2007/04/13(金) 11:37:03ID:W3WC3UzW<script>
array[1] = {$infotype2[1]};
</script>
こんな感じにjavascriptのコード内でsmartyから受け取った値を代入したい場合はどうすればいいんでしょうか。
よろしくお願いいたします。
0936nobodyさん
2007/04/13(金) 11:59:56ID:W3WC3UzWなるほど。勉強になります。
ありがとうございました。
0937nobodyさん
2007/04/13(金) 12:05:45ID:???0938nobodyさん
2007/04/14(土) 00:52:03ID:???サーバサイドスクリプトとクライアントサイドスクリプトの間には何があるのか考えればおのずと答えが出るだろ。
もしかして{がデリミタだから引っかかってるとかじゃないよな?
0939nobodyさん
2007/04/17(火) 19:07:41ID:???$tmpArray = array();
foreach ($list as $row) {
$tmpCheckBox =& $form->createElement('checkbox');
$tmpCheckBox->setName($i);
$tmpCheckBox->setText($row['name']);
$tmpCheckBox->updateAttributes(array(
'value' => $row['id'],
'id' => 'check_'.$i
));
$tmpArray[] = $tmpCheckBox;
$i++;
}
$form->addGroup($tmpArray, 'ques_01', '', '');
こんな感じで checkbox の value の値は変えられるようになったのですが
freeze() すると値が1に戻ってしまいます。
何とか freeze() を経由しても、継承する方法はないのでしょうか?
0940nobodyさん
2007/04/17(火) 22:45:42ID:???0941nobodyさん
2007/04/17(火) 23:43:20ID:???0942nobodyさん
2007/04/18(水) 00:51:02ID:???0943939
2007/04/18(水) 10:23:00ID:???レンダリングで Smarty 使ってたもんでつい…。移動します。
0944nobodyさん
2007/04/22(日) 18:56:08ID:b9VJcguVテンプレート(.tpl)中の
{foreach name=loop from=$products item=product}
〜〜
{/foreach}
としている部分がまるっきりブラウザに表示されません
なにが問題でしょうか?
ありがちなミスのパターン(解決策)を教えてください。
自分なりに確認したつもりですがわかりません
0945nobodyさん
2007/04/22(日) 19:28:50ID:???$productsをassignしてない
$productsのスペルが間違ってる
某情報機関の調査によれば上記の凡ミスが全バグ中の85%を占めるそうです。
0946nobodyさん
2007/04/24(火) 18:30:43ID:???<TBODY>
<TR><TH>AAA</TH><TH>BBB</TH><TH>CCC</TH><TH>DDD</TH><TH>EEE</TH><TH>FFF</TH></TR>
<?php
while ($rs = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
?>
<TR><TD align="center"><?=$rs['h_AAA']?></TD>
<TD><?=$rs['h_BBB']?></TD>
<TD><?=$rs['h_CCC']?></TD>
<TD><?=$rs['h_DDD']?></TD>
<TD><?=$rs['h_EEE']?></TD>
<TD><?=$rs['h_FFF']?></TD></TR>
<?php
}
?>
</TBODY></TABLE>
<?php
}
$result->free();
$conn->disconnect();
?>
smartyの勉強しています。
上の文をphpとtplに分ける際にどう記述すればいいですか?
よろしくお願いいたします。
0947nobodyさん
2007/04/24(火) 20:11:55ID:???ん
http://sky.freespace.jp/smarty/SmartyManual_2-6-7J_html/
0948nobodyさん
2007/04/25(水) 00:40:47ID:6uGbCoSGサンキュー 解決した!
0949nobodyさん
2007/04/25(水) 00:52:35ID:???つ【最新版】
http://smarty.m-takagi.org/
翻訳者のみなさんマジGJ!
0950nobodyさん
2007/04/25(水) 18:06:36ID:oViUh0CG****php******
<?php
$sql = 'SELECT * FROM table;
$smarty->assign('data', $conn->getAll($sql));
$smarty->display('file:E:/html/list.tpl');
?>
****list.tpl****
<TABLE width="100%" border="1" cellspacing="0" cellpadding="1">
<TBODY>
<TR><TH>AAA</TH><TH>BBB</TH><TH>CCC</TH><TH>DDD</TH><TH>EEE</TH><TH>FFF</TH></TR>
{section name=co loop=$data}
<tr>
<td>{$data[co].AAA}</td>
<td>{$data[co].BBB}</td>
<td>{$data[co].CCC}</td>
<td>{$data[co].DDD}</td>
<td>{$data[co].EEE}</td>
<td>{$data[co].FFF}</td>
<tr>
{sectionelse}
<tr><td colspan="5">No items found</td></tr>
{/section}
</TBODY></TABLE>
参考にして組んでみたのですが
上のソースだと、ブラウザに表示されまん。
データはとんでるぽいのですが。。。
設定まわり???
0952nobodyさん
2007/04/26(木) 09:07:13ID:ogJz3FoA解決しました。ありがとう
e時ミスでした。
0953nobodyさん
2007/05/08(火) 16:15:44ID:???[4-May-2007] The Japanese documentation is here! Thanks goes to Masahiro Takagi, Joe Morikawa, Daichi Kamemoto, and Shinsuke Matsuda for their hard work.
0954nobodyさん
2007/05/12(土) 22:26:46ID:6YVR0l4j{php}
require_once(hoge.php)
{/php}
↑みたいなことやるとhoge.phpの中でDB(MYSQL)から読み込んだ文字だけ
文字化けするんだけど何で?
ちなみにhoge.phpを直接実行する場合は文字化けを起こさない。
DBもphpもtplも全部UTF-8Nで統一してんだから当たり前だけど。
0955nobodyさん
2007/05/13(日) 00:40:29ID:???0956nobodyさん
2007/05/13(日) 05:21:57ID:m+4dQ5o9テンプレートの名前、例えばhoge.tplを
www.hoge.jp/hoge.phpとwww.hoge.jp/foo/hoge.phpと両方で使うと、バグると言うか、同じtplとみなして表示がおかしくなりますよね?
template_cを自前で切り替えないとダメってコト?
不便じゃない?
みんなどうしてます?
0959nobodyさん
2007/05/17(木) 01:55:24ID:???php部分
$array=array(
"1"=>array("sys"=>"a1"),
"2"=>array("sys"=>"b2"),
"3"=>array("sys"=>"c2"));
$array2=array(
"a1"=>array("ver"=>"z1"),"a2"=>array("ver"=>"z2"),"a3"=>array("ver"=>"z3"),
"b1"=>array("ver"=>"z4"),"b2"=>array("ver"=>"z5"),"b3"=>array("ver"=>"z6"),
"c1"=>array("ver"=>"z7"),"c2"=>array("ver"=>"z8"),"c3"=>array("ver"=>"z9"));
通常表示このように変数値で配列番号を指定し表示される部分を
foreach($array as $value){
print $array2[$value['sys']][ver];
}
//結果 z1z5z8
smartyで同じ処理をするよう
以下コードを書いたのですがパターン1〜3ともに表示できませんでした。
配列番号を変数で指定することは不可能なのでしょうか?
{foreach item=a key=key from=$array}
{$array2[$value['sys']]ver} パターン1
{$array2.$value['sys'].ver} パターン2
{$array2.$value.sys.ver} パターン3
{/foreach}
0960nobodyさん
2007/05/17(木) 01:57:57ID:???{foreach item=a key=key from=$array}
{$array2[$a['sys']]ver} パターン1
{$array2.$a['sys'].ver} パターン2
{$array2.$a.sys.ver} パターン3
{/foreach}
0962nobodyさん
2007/05/27(日) 20:34:44ID:CBMyXuH3上に空白が入ってしまいます。
<b>aaa</b>だと大丈夫でした。
どうすれば空白がきえますか?
先ほど別の板で{strip}{/strip}を教えて頂いたのですがダメでした。
宜しくお願い致します。
0964nobodyさん
2007/05/28(月) 00:33:32ID:Q4t73dbV<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0013)about:internet -->
<html>
<head>
<title></title>
<body>
<table>
<tr><td>aaaa</td></tr>
</table>
</body>
</html>
0965nobodyさん
2007/05/28(月) 01:05:51ID:Q4t73dbVすいません、間違えました。
少し酔ったんでまたソース書き込みます。
ご親切にレス頂いたのに本当にすみません。
0966nobodyさん
2007/05/31(木) 17:23:08ID:AGOFu4XP{$ar|count}
とすると
Array
と表示されてしまうのですがなんで?
上のように書いたら
count($ar)になると思ってたのですが。
0967966
2007/05/31(木) 17:29:46ID:???書いた後に気づいた
@で解決した
0968nobodyさん
2007/05/31(木) 20:33:38ID:???foreach内でcaptureしたものを配列にして、
html_tableで表示させたいのですが、どうしても
captureで読み込んだものを配列できません。
どうすればテンプレート内で配列にすることができますか?
{foreach from=$item key='key' item='val' name='Loop'}
{capture name='val' assign='row'}
{$val.id}<br>
{$val.word}
{/capture}
{/foreach}
↑$rowに$itemで表示する内容を入れて
↓こんな感じで表示させたい
{html_table loop=$row cols='4'}
0969nobodyさん
2007/06/01(金) 12:22:12ID:???0970968
2007/06/01(金) 15:34:39ID:???{capture name='val' assign=row[$key]}
foreach内にこんな感じで入れてみたり。
{assign var="row" value=$smarty.capture.row}
0971nobodyさん
2007/06/13(水) 13:16:13ID:CAn4D9tB$fuga.hoge.$foo.bar では通らないらしい
0972nobodyさん
2007/06/13(水) 16:26:42ID:CAn4D9tB$fuga.hoge[$foo.bar] で通りますた
$fooは連想配列だけどいいのかなあ・・・
0973nobodyさん
2007/06/14(木) 13:10:19ID:41cbMn19レンタル先に問い合わせたら、Smarty使ってるせいっていわれたらしんですけど
そんなことってありますか?
Smartyってキャッシュするから他のテンプレートエンジンより高速っていいますよね?
なんかApacheのキャッシュがSmartyと相性が悪いって、いわれたらしいんですけど・・・
もちろん専用サーバーなので、他のサイトのせいで重いってこともないし、
最初立ち上げたときはそれほどでもなくて
明らかに重くなってるので、プログラムのせいってこともないと思うし。
問い合わせた本人じゃないので詳しくわからなかったんですけど、ApacheとSmartyって相性悪いんですか?
もしかしたらapacheのログのせい?
Apacheの設定でどうにかならないのでしょうか?
どうも、こっちが知らないと思って適当にあしらってる感じがしないでもないOTZ
ヴァキュームとかしてるのかな・・・
0975nobodyさん
2007/06/14(木) 15:34:54ID:???Smartyは確かに軽いライブラリじゃないけど
(xdebugで解析するとメインの業務処理より時間がかかってる場合多し)
体感で重いという程なら他の要因を調べるべき。
秒間何十アクセスとかじゃないんだよね?
Pentium3 500MHzとかのヘボマシンだと、
(Webアプリに大いに依存するけど)
秒間十アクセス程度でキツイ。
0976nobodyさん
2007/06/14(木) 23:13:08ID:???ApacheとPHPモジュールならそのマシンでももっともーっと行けるだろ。
普通にGUIログインでクライアントマシンとして利用しながら
サーバー立ち上げてるとか??
0977975
2007/06/15(金) 09:10:33ID:???チューニングしないとそんなもんだと思うけど…
OOPしてるからちょっとはオーバーヘッドあるだろうけど、
特に重い処理していないし。
軽いところで、秒間10〜20ぐらい。
APCとか入れると秒間30〜40ぐらいは行ける。
0978nobodyさん
2007/06/27(水) 14:31:02ID:qqHE9rvp0979nobodyさん
2007/07/02(月) 12:04:34ID:XrjaoeQ20980nobodyさん
2007/07/04(水) 17:25:01ID:DXXJfQ6l同様に、PHPとテンプレートが対になったパーツの使い回し(例えばblogの最新コメント一覧など)
したい場合は、一般的にはinsertプラグインとして開発するのがベターなのでしょうか?
このあたりの情報ってなかなかありませんね…。
0981nobodyさん
2007/07/04(水) 19:40:20ID:???JavaScriptでパーツ部分(例えばblogの最新コメント一覧など)だけ読み込むのが普通かも。
Smarty関係ないけど。
0983nobodyさん
2007/07/07(土) 03:22:45ID:???ちゃんとしたフレームワーク使ってなくても、データ取ってきてテンプレートに展開した結果を部品として、HTMLを組み立てるって方法はよくやりますね。
それをまたテンプレート変数にアサインして、外側(レイアウト)のテンプレートに展開するのもありかと。
Smartyオブジェクトを複数生成することになるけど、部品ごとにキャッシュ使ったりテンプレートの格納先を変えたり、応用が効く利点も。
レイアウトはSmartyで、フォーム部分はFlexyってパターンもやったことあります。
レス数が950を超えています。1000を超えると書き込みができなくなります。