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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/02(土) 00:21:09ID:6cKcKeTp
まぬあるhttp://www.smarty.net/manual/ja/
0002nobodyさん2008/02/02(土) 00:31:36ID:???
smartyのことを聞きたいやつはとりあえずここに書き込め
0003nobodyさん2008/02/02(土) 01:01:34ID:???
なんで隔離なの?
0004nobodyさん2008/02/03(日) 10:44:03ID:???
ソースと別って意味か?
0005nobodyさん2008/02/09(土) 22:07:45ID:c9Rr2KUa
HTMLの中にコードが書けるのがPHPの特徴だったのに、なんでテンプレートエンジンなんか使うの?
テンプレート使うくらいならPHPなんか使わずにPerlを使った方が効率が上がるのに。
0006nobodyさん2008/02/12(火) 12:01:15ID:???
別にSmartyなんて質問することなくね?
0007nobodyさん2008/02/20(水) 11:19:49ID:q0lktVll
カスタム関数のdefaultを空白('')にして、かつ、もし値があればstring_format(%0.1fなど)して表示するにはどうすればいいですか?(できればif文を使わずに)
現状では、値が無い場合に0.0という表示が必ず出てしまいます。
defaultを先にしても後にしても同様です。
どなたかお願いします。
0008nobodyさん2008/03/03(月) 05:14:04ID:???
ちょっと調べてみたところ
HTMLとPHPが混在した形とSmartとで表示速度が5倍以上違う(当然前者の方が速い)らしいのだけども
なんか他に高速なテンプレートエンジンってないの?
処理速度さえ高速なら機能は最低限でいいんだけど
0009nobodyさん2008/03/03(月) 05:30:31ID:???
10msが50msになったところで大して変わらなくね?
0010nobodyさん2008/03/03(月) 15:19:04ID:FhmTLeYh
>>9
5倍も違うんだと、アクセス多いと如実に効いて来るよ。
0011nobodyさん2008/03/10(月) 20:24:56ID:la5GJf3w
compile_dir配下にできるファイルの
パーミッションを0600にしたいのですが
smartyの設定でありますか?
0012nobodyさん2008/03/11(火) 08:47:15ID:GwdF10l+
smartyと関係ないだろ
umaskとかしとけばいいんじゃね?
0013112008/03/11(火) 11:14:01ID:???
>>12
ごめんなさい
smartyの設定ではできないんですね
umaskでやることにします
0014nobodyさん2008/03/11(火) 15:02:25ID:???
質問したいんですけどいいですか?
0015nobodyさん2008/03/11(火) 17:15:12ID:???
↓どうぞ
0016nobodyさん2008/03/11(火) 21:41:50ID:???
それにしても、アンチスレは別だとして
「できない」ってことを言えない人がいるよね。
0017nobodyさん2008/03/12(水) 10:42:36ID:gvIujdzc
キャッシュを600にする意味って何あるん?

0018nobodyさん2008/03/13(木) 19:13:48ID:???
>>17
他人にみられたくないからだろ?
0019nobodyさん2008/03/14(金) 21:01:04ID:???
Smartyというのは、既にフォームがPHPで書かれてて、それを自分でカスタマイズするって感じですか?
0020nobodyさん2008/03/14(金) 21:10:40ID:???
そんなわけねーだろw
0021nobodyさん2008/03/14(金) 21:30:53ID:???
じゃあ初心者には難しいですね
0022nobodyさん2008/03/15(土) 02:54:21ID:???
>>21
初心者向けだよ
0023nobodyさん2008/03/15(土) 04:31:17ID:???
初心者向けだが、素人向けではない。
0024nobodyさん2008/03/15(土) 18:59:02ID:???
どうもお世話になってます。

SmartyはApacheで確認できないんですね
0025nobodyさん2008/03/15(土) 19:03:04ID:???
動きました。 ありがとうございます
0026nobodyさん2008/03/18(火) 12:21:04ID:YNr5gB9L
html_select_dateを使用してデフォルト値を決めた場合、javascriptを使って、変更後の値をデフォルト値に戻すことは可能でしょうか?
例えば開始と終了日付がありリセットボタンが押された際にjavascrptが、動いて片方だけデフォルト値に戻る等
0027nobodyさん2008/04/06(日) 21:01:07ID:???
これってけっこうひどいねw
作ったやつらってあまり賢くないよなw
0028nobodyさん2008/04/07(月) 16:47:08ID:???
>>27
誰がどう見ても、おまえよりは数倍賢いと思うぞw
0029nobodyさん2008/04/11(金) 13:33:17ID:lTuTwlT7
Config_File.class.phpの130行目でOnly variable references should be returned by referenceのNoticeエラーが出る

ソースみたらリファレンスで返さなくちゃいけないのに
function &get($file_name, $section_name = NULL, $var_name = NULL)
リファレンスで返してない
return (array)$this->_config_data[$file_name]["vars"];
0030nobodyさん2008/04/14(月) 01:03:25ID:iLkauD+A
assign_by_ref('test', 1)
みたいな事やるとなにがしかのエラーが出たと記憶していたのですが、
今試してみたらエラーが出ません。
どこかのバージョンから変更になったのでしょうか?
それとも元からが勘違いだったのでしょうか?
0031nobodyさん2008/04/14(月) 05:42:53ID:/O4ED1WG
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
0032nobodyさん2008/04/18(金) 06:04:17ID:uLMECrIl
escapeを何度も通過して実体参照を実体参照にしてしまう問題を解決したいです。

<textarea name="hoge">{$hoge|escape}</textarea>
というテンプレートで入力フォームを作りました。

入力フォームに値を入れて画面遷移するとデータベースに入力内容を入れて完了画面がでます。
同じ入力フォームでデータの更新をするページを作ると問題が発生しました。

タグ文字列は通過させながらもHTMLが壊されないようにしないといけないのですが、いい方法ないでしょうか。
0033nobodyさん2008/04/18(金) 06:41:29ID:???
入力フォームやらデータの更新とやらの話は関係なくね?
0034nobodyさん2008/04/18(金) 07:33:12ID:???
入力文字列をphp側で受け取ったときにunescapeすればいいのでは?
0035nobodyさん2008/04/18(金) 08:13:30ID:Kck9JNI8
ページの出力時に任意のヘッダを挿入したいとき、
どのようにすればよいでしょうか。

display()する前に、phpのheader()を書くことで、
追加できてはいるのですがコードの流れ的に不自然というか・・
あと、例えばContent-lengthヘッダを追加したいとかなると、
ますますテンプレートと行き来することになり、ますます変な気がします。
Smartyでヘッダ追加の関数はあるんでしょうか。
0036nobodyさん2008/04/19(土) 23:32:19ID:???
Smartyつかうとすげー楽になるっていう実例おしえてくだしあ!!
0037nobodyさん2008/04/19(土) 23:35:20ID:???
マニュアル見れば書いてあるよ
0038nobodyさん2008/04/20(日) 00:29:00ID:ui/WcxXd
>>36
キャッシュとかカスタムプラグインとかいろいろ
0039nobodyさん2008/04/20(日) 00:33:38ID:???
しかしキャッシュONにするとテンプレート変更しても反映されないのは何とかならないものか
0040nobodyさん2008/04/20(日) 04:24:32ID:???
それマジでダルいよな。
変更判定をしっかりやって欲しい
0041nobodyさん2008/04/22(火) 19:44:38ID:???
>>36
複数のサーバで同じシステム使っているのだが
phpファイルの変更にはツール使って一発で全サーバ更新できるので便利。
デザインやリンク先の違いも全部吸収できる。

まあテンプレートエンジンならなんでもいいんだけど
速度よりメンテ性重視にするとSmartyになった。
0042nobodyさん2008/04/22(火) 21:38:51ID:???
>>41
何それどういうツール?
0043nobodyさん2008/04/23(水) 00:52:29ID:???
思うんだけど、Smarty使って{}のコードをhtmlに埋めるのと
PHPの<?php ?>でhtmlファイルをPHP化して埋めるのと、
あまり大差無いと思うんだが。

デザインとプログラムの分離としてしばらく勉強してきたけど、
Smarty専用のコードを覚える=プログラムを覚えることと同義な気がする。
0044nobodyさん2008/04/23(水) 01:22:37ID:???
Smatyの機能は{$var}で変数が表示できることだけですよね。わかります。
0045nobodyさん2008/04/23(水) 04:20:00ID:???
でも、デザイナがなんとなく書いたPHPコード付きhtmlなんて怖くて使えないだろ?w


誰かSmartyリファクタリングしてくんねーかなぁ、
default_modifiersバグや、キャッシュの反映チェックがぬるい等
便利機能がいまいち使いこなせないのが辛い。
0046nobodyさん2008/04/23(水) 11:20:20ID:???
>でも、デザイナがなんとなく書いたPHPコード付きhtmlなんて怖くて使えないだろ?w

それもあるんだよなw
一度デザイナーからhtmlを受け取ってシステム化した後、
修正が入る場合、画像作成とか以外では、PG側がしなきゃいけないもんな。

でも、それもデザイナーがSmartyのソースいじる可能性もあるし、
やっぱり同じ事のような気がする。だから厳密なデザインとプログラムの分離
とは行かないんだよな。
0047nobodyさん2008/04/23(水) 15:25:42ID:pSFXKy0F
>>42
ボタン1つで複数のサーバにsshアップロードする機能があるFSW。というか自作だけど。

以前はテンプレートエンジンなしでこのツール作ってたが1サイトだけマーキー入れてほしいとかいう要望に対しては
手作業で対応するしかなかった。
もちろんサイト間の差分なんか把握できるわけない・・・

>>46
>>44みたいな使い方もできるし、デザイナにもっと権限を与えることもできる、でいいんじゃないかなあ。
0048nobodyさん2008/04/23(水) 16:01:50ID:???
ロジックの分離というより、権限管理的な意味合いが濃いんじゃないかな。

故意にPHPコードを書かない限りは、Smarty内で簡潔するので、安全っちゃ安全。
0049nobodyさん2008/04/23(水) 19:51:43ID:rNbxu3m+
質問です。
yum install php-Smarty
がインストールできないのですが、なんで?
その前にインスコしておくものはありますか?
CENT OSなんですが....

0050nobodyさん2008/04/23(水) 20:00:10ID:???
そんなんで知るかボケ
005149です。2008/04/23(水) 21:36:12ID:rNbxu3m+
どこで質問すればいいの?
0052nobodyさん2008/04/23(水) 23:04:45ID:???
osスレ
0053nobodyさん2008/04/24(木) 15:44:39ID:???
中身はただのphpファイルなんだからtgzファイル落として解凍するだけでいいんじゃね?
こういうのってパッケージ管理使う意味あるのかな。
0054nobodyさん2008/04/24(木) 15:50:43ID:???
0055nobodyさん2008/04/24(木) 21:52:29ID:???
pearifiedをpearのチャンネルに追加してそっからSmartyをとってくると楽。
0056nobodyさん2008/04/26(土) 23:54:58ID:???
ちょっと使ってみた。
sqlserverでカラム名が和名。
select 住所1 from 得意先マスタ
その和名のまま連想配列にしてテンプレートに渡すとエラーになる。
select 住所1 as zyuusyo1 from 得意先マスタ
これで渡すとzyuusyo1でちゃんと取得できる。

まあ、和名テーブルやらカラムを作るなって話だが、今あるからしかたない。
まだまだ、和名には弱いのかなぁ?実はパッチがあったりしますか?

あと、テンプレート側で、都道府県名と言う文字列を含めるとエラーになる。
県名にかえたらエラーでず。
んーーーー。不便。
0057nobodyさん2008/04/27(日) 00:37:38ID:???
住所1て
0058nobodyさん2008/04/27(日) 08:48:29ID:???
文句を垂れる前に、日本語文字コードについて学べ。
0059nobodyさん2008/04/27(日) 12:24:18ID:???
ところで、皆Smartyの拡張クラスの名前何にしてる?
MySmartyだと、何かダサイ気がしてならない
0060nobodyさん2008/04/27(日) 14:53:43ID:???
EternalForceSmarty

相手は死ぬ
0061nobodyさん2008/04/28(月) 10:19:07ID:???
>>59
変な名前付けてあとでわからなくなるより
MySmarty

かっこいいのがいいなら
SuperSmarty
0062nobodyさん2008/04/28(月) 11:48:26ID:???
MySmartyだと用途がはっきりしないので、

SmartyMobile
SmartyWeb
SmartySitename
SmartyView

的な命名の方がよくね?
0063nobodyさん2008/04/28(月) 12:11:28ID:???
あれ? 今回なんて名前にしたっけ?
って考えるのが面倒くさいから、いつもMySmarty
0064nobodyさん2008/04/28(月) 18:00:24ID:???
俺はいつもYouSmarty
0065nobodyさん2008/04/28(月) 18:33:55ID:???
PHPだからできる $smarty
0066ムームー2008/05/02(金) 02:13:12ID:xWzxYhLM
$template_dir に関するマニュアルに、
「このディレクトリをwebサーバのドキュメントルート下に置く事を推奨しません。」
と書いてあるんだけど、根拠がわかる人いる?
0067nobodyさん2008/05/02(金) 02:14:59ID:???
逆になぜ置く必要があるのか
0068nobodyさん2008/05/02(金) 02:26:22ID:???
httpdの設定ミスってテンプレートだだ漏れ
おまけに内部のデータ構造も推測できちゃう作りでしたとかやる奴がいるからだろう
0069ムームー2008/05/02(金) 03:55:53ID:xWzxYhLM
>>64
> 逆になぜ置く必要があるのか
テンプレートを別ディレクトリに配置すると、保守性が悪いから。

>>68
> httpdの設定ミスってテンプレートだだ漏れ
> おまけに内部のデータ構造も推測できちゃう作りでした
テンプレートが見られても、あんまり危険性がないと思うんだけどな。
escape し忘れて XSS される、ぐらいかな。
でも、そんなのはテンプレート見るまでもなく、
実際に入力してみれば escape していないことはすぐ分かるしさ。
0070nobodyさん2008/05/02(金) 08:18:26ID:???
逆に考えるんだ,公開する必要があるディレクトリをドキュメントルート以下に置くと考えるんだ

もしくはせめてaccessでも使え
0071nobodyさん2008/05/02(金) 12:35:17ID:???
>>69

テンプレの構造を解析されて、直接変数へバッファオーバーフローを起こす様な汚染データを打ち込まれる
0072nobodyさん2008/05/02(金) 13:35:15ID:???
つーかさ、そこまで承知の上ならドキュメントルート以下に置けばいいと思うよ
推奨であってドキュメントルート下だと動作しない訳じゃないんだし

俺はレンタルサーバとかでドキュメントルートにしか置けない場合を除いて別ディレクトリに置くけどな
0073nobodyさん2008/05/02(金) 14:11:27ID:???
俺はローカル側で管理しづらいという理由でドキュメントルート下に置いて.htaccessで全Deny
0074nobodyさん2008/05/02(金) 14:25:29ID:???
そしてAllow Overwrite Off
0075nobodyさん2008/05/02(金) 14:31:06ID:???
テンプレートをドキュメントルート下に置かないと保守性が悪いとか
ローカルで管理しづらいって、さっぱりわからんなあ
例えばドキュメントルートの一つ上の階層にテンプレートを置くとして
そこを基点に管理するだけの話だと思うんだが
0076nobodyさん2008/05/02(金) 17:21:49ID:???
ぶっちゃけフォルダ移動まんどくせ
0077nobodyさん2008/05/02(金) 18:53:27ID:???
ドキュメントルート外に置くと、相対的に読み込んでいる画像とかCSSとの、パスが切れるって事だろ?
HTMLコーディングしてる最中にプレビュー出来ないってのが面倒だって事だろ?
0078nobodyさん2008/05/02(金) 19:40:12ID:???
>>77
は?お前は何を言ってるんだ
0079nobodyさん2008/05/03(土) 19:44:56ID:???
>>78
templates/index.html
htdocs/image.jpg

というファイル構成だと、
ローカルファイル上で画像チェックをする術が無いって事だよ。
これは、コーダー観点で見ると致命的に面倒。

htdocs以下をテンプレートディレクトリにする事で解消されるから、利便上htdocsに置く人達がいるわけだ。

templatesディレクトリに画像とか置いちゃう方法でもいいんだけど。
0080nobodyさん2008/05/03(土) 20:00:42ID:???
ローカル上のシステムにアクセスして確認すればいいじゃん
0081nobodyさん2008/05/03(土) 21:44:08ID:K4MBJC9r
templates_cの方がやばいだろ。
0082jtb2008/05/03(土) 21:57:29ID:???
自宅鯖を、レンタル鯖にするところまではできるんですが、ユーザーと、ftpパスワードの保存先ディレクトリどこにしようか迷ってるのですが、普通はどこに保存してますか?
0083nobodyさん2008/05/03(土) 22:08:53ID:???
public_html/secure/ftppass.txt
0084nobodyさん2008/05/03(土) 23:29:36ID:???
>>80
ローカル上のシステムって意味がわからんが。

ローカル鯖でも立てない限り、確認は無理。
コーダーに鯖立て強要(例えXAMPPでも)も厳しい。

OK?
0085nobodyさん2008/05/03(土) 23:33:32ID:???
開発中はbaseパス設定するなり置換するなり好きなようにすればいいじゃん
0086nobodyさん2008/05/03(土) 23:36:53ID:???
開発中はtemplateをhtdocs以下に置いてもいいじゃん
0087nobodyさん2008/05/04(日) 00:40:42ID:???
ローカルにサーバー立てられないやつは
この業界から消えていいよ。
0088nobodyさん2008/05/04(日) 01:46:37ID:???
XAMPPのサーバも立てられないコーダなんて糞過ぎ。まぁ、だからコーダなんだろうけど。いやしかし。

まぁ、俺なら*.tpl(*.htmlを含んでもいい)をtemplateディレクトリに、残りをhtdocsに置くスクリプトを用意するけどね。
0089nobodyさん2008/05/04(日) 02:21:16ID:???
XAMPPは地雷だろ・・・
0090nobodyさん2008/05/05(月) 19:52:01ID:???
ローカル環境作ってない奴ってバージョン管理やデプロイ手作業でやってる訳かな?
高校生バイトじゃあるまいし
0091nobodyさん2008/05/06(火) 12:34:25ID:???
デプロイを手作業でやらないって
何を使ってるの?
0092nobodyさん2008/05/06(火) 15:53:08ID:???
テスト環境ならsvn管理下に置いてsvn updateだけど
本番環境は手作業だなあ
0093nobodyさん2008/05/06(火) 22:40:24ID:???
分散ものに関わるとシェルなりでスクリプト走らすけど、ねえ
0094nobodyさん2008/05/07(水) 14:15:57ID:???
>>93
それもやるけど、しかしコンソールに生のHTML、しかもオーサリングソフトで作ったような多重テーブルとスクリプトが含まれる
テキストはもはや人間の読むものではない。
0095nobodyさん2008/05/09(金) 04:28:25ID:???
デプロイって標準的なやり方ってないのかな。
0096nobodyさん2008/05/09(金) 06:33:29ID:???
>>95
つFFFTP
0097nobodyさん2008/05/09(金) 12:07:52ID:???
>>59
自分はいつも
SetupSmarty
ってつけてる。
0098モモ子2008/05/09(金) 13:33:34ID:6V2WpTSb
テンプレートでいつも {$var|escape} みたいに escape つけるの
面倒だよねー?何かいい方法はないかなー?
0099nobodyさん2008/05/09(金) 14:51:49ID:???
? ? ?
0100nobodyさん2008/05/09(金) 16:58:56ID:???
>>98
・escape済の変数をassignする
・もしくはdefault_modifiersにescapeをいれとく

お好きなほうでどうぞ。
後者は特定の条件で不具合が発生するので、自力で修正する自信ないならお勧めしない。
0101nobodyさん2008/05/10(土) 08:34:44ID:???
なんで肝心な不具合とかが修正されないんだろ。
日本とは感覚が違ってて必要とされてないのかな。
■ このスレッドは過去ログ倉庫に格納されています