【PHP】 Smarty 隔離スレ 【テンプレート】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/02(土) 00:21:09ID:6cKcKeTp0301nobodyさん
2008/10/15(水) 19:38:33ID:???>tpl.phpが難しいから学習コストが高いということかな?
少なくともSmartyと比較したら数倍難しいし、
素人のロジックがシステムに混入する恐れがある。
define("DEBUG", 1); とか $_POST["xxx"] = "debug data!"; とか書かれてたら寒気しない?
>Smartyで出来る事は理論上すべてPHPで出来る
これは逆じゃないかな。
「symfonyで出来る事は全てPHPで出来る」と言ってるのと同じで、
Smartyは所詮PHPライブラリに過ぎないんだから。
> PHPが理解出来ないレベルのへぼデザイナーはbody.phpだけ触らせるしかない
>「SmartyはわかるけどPHPは触れません」というデザイナーって、結構多いのかな?
仮にPHPが触れるデザイナがいたとしても、
上に書いたようにセキュリティの観点からは、システムに影響を与える権限を与えないのが普通だと思う。
少なくとも外注のデザイナには絶対に触らせたくないよね。
>tpl.phpは、デザイナーが作るのが理想だが、プログラマーがやっても構わない。
tpl.phpはビューである以上、デザイナが触るべきだと思う。
ロジック的にMVCを分けても、管理体制(担当区分)がわかれていないとエラーが出た時に面倒だから。
そういう意味ではSmartyはその機能性より、
コードの統一性や管理体制に与える恩恵の方が大きいのかもね。
0302nobodyさん
2008/10/15(水) 20:31:43ID:???>(是非はおいといて)>>278のような事をSmartyで実現したい。
{assign}{capture}{eval}あたりで出来るよ。
コンパイル後のソース見ればわかるけど、assignなんかはコストもほとんど変わらない。
// format.tpl
{assign var="name" value=$name|escape|default:"no name"}
{include file="body.tpl"}
// body.tpl
{$name}
>MVCで言うと、new Smarty();が書かれるファイルは、
>モデルでもコントローラでもなく、ビューに属する事になる。
自分はSmarty自体をビューとして考えているかな。
コントローラがビュー(Smarty)を生成し、レスポンスデータを渡す。
ビュー(Smarty)は与えられたレスポンスデータを元に画面を表示する。
↓こんな感じ。
class Controller {
public function action() {
// 実際にはSmarty継承クラスor内包クラスになる
$view = new Smarty();
// 必要な処理をしてビューにレスポンスデータを渡す
$view->setResponse(new Respose(xxxx));
// 整形や表示処理は全てビューにまかせる。
$view->render();
}
}
0303nobodyさん
2008/10/15(水) 20:34:36ID:???jspが書けないデザイナもヘボなんだよね?
MovableTypeのテンプレートタグも知らなきゃヘボなのかもしれない
うーん、大変だな
0304nobodyさん
2008/10/16(木) 02:49:37ID:???> PHPは正確にはテンプレートエンジンでは無いんですよ。
そうなんですか??
> Smartyのテンプレートの中にPHPを直接書く事も出来ますよ。(非推奨ですが)
んんーSmarty内でPHPコードを書くのは本末転倒というか本末転倒ですよね。。
あとカスタムタグ?のサンプルありがとうございます!
ttp://smarty.incutio.com/?page=foreachgroupというのがおもしろそうでした!
0306nobodyさん
2008/10/16(木) 08:06:34ID:???CSS、HTML、JSあたりを完璧に書けない奴はヘボプログラマなんかねw
個人的にはデザイナはPHPとか勉強するヒマあったら、
システムに組み込みやすいスマートなHTMLコーディング技術を学んで欲しいわ。
0308nobodyさん
2008/10/16(木) 19:53:26ID:???0309196
2008/10/19(日) 11:55:40ID:???>>301
{php}{/php}でも同様の問題は発生すると思うので、その辺は気にしても仕方ないと思っている。
デザイナーにSSHを使わせないとか、PHPが絶対に動かない環境しか与えないとか、
へぼい人を縛る方向で考えるよりは、へぼくない人と仕事するほうが良いと思ってしまう。
>>302
やっぱり、そうなってしまうよなあ。
上で「それはMVCではない」と言われてから、内心悩んでたんだけど。
Smartyの解説ありがとう。その線で学習コストが等価になれるか検討してみる。
>>303
JavaとかMT(使ってる人いるのか?)のプロジェクトなら、そうだろうね。
>>306
HTML書けません、というプログラマーとは間違っても一緒に仕事しないよ。
というより、Smarty文法がわからないデザイナーと一緒に仕事しないでしょ?
同じことでないの?
0310nobodyさん
2008/10/19(日) 15:09:25ID:???>{php}{/php}でも同様の問題は発生すると思うので、その辺は気にしても仕方ないと思っている。
{php}{/php}タグは禁止に出来ます。
>デザイナーにSSHを使わせないとか、PHPが絶対に動かない環境しか与えないとか、
>へぼい人を縛る方向で考えるよりは、へぼくない人と仕事するほうが良いと思ってしまう。
逆になんで必要の無い権限を与えるの?それによるデメリットは考慮しないの?
まっとうなセキュリティの考え方だったら「必要な権限以外は与えない」のが常識だと思うんだけどね。
最低限の権限で不便させない環境を提供出来ないシステム屋こそへぼい人だと思う。
参考までにいくつか質問させておくれ
・プロジェクトの人数とか連携手法やらバージョン管理方法は?
・テンプレートPHPでエラーが出たら誰の責任になるの?
・テンプレートに使ってるPHP系のライブラリとかは?
0311196
2008/10/19(日) 15:56:49ID:???デザイナーに権限を与えたくないなら、HTMLだけを納品させて、
コードレビューとサーバへの設置はプログラマーがやればいいじゃん。
デザイナーにサーバへの書き込み権限を与えた時点で、
(仮にあらゆるコマンドの実行をサーバ上で絶対に行えなくしたとしても)
デザイナーはシステムの正常動作責任を一部負う事になるのは間違いない。
たとえば、必要なパラメタを渡さなかったとか、ファイルを消しちゃったとか。
だから、あらゆる操作をサーバ上で絶対に行えなくすることのメリットは、
デザイナーがサーバを壊さないようにする、という程度に過ぎないので、
それなら優秀で信頼のおけるデザイナーと仕事したほうがいいんじゃないの? と思う。
質問の答えだけど、製品が完成しなかったらチーム全体の責任。
デザイナー主導の案件でもプログラマー主導の案件でも、
インタフェース定義の必要性は発生し、それは両者(主に主導側)の責任になる。
Smarty単体ではシステムの仕様テストは行えないので、
「言われたとおりのSmartyテンプレートだけ書くからあとは知らないよ」というデザイナーは、
HTMLだけしか書かないデザイナーと大して変わらない。
なので俺はそういうデザイナーとは仕事してないし、
もしデザインを外注する事があっても、Smartyの学習を促す事は無いと思う。
あえて擁するなら、へぼプログラマーと連携する時には、Smartyは役に立ったな。
あれを安直に使えば、嫌でもビューとロジックが分離出来るから。
でも今はフレームワークを使うのが普通なので、そのメリットは感じられなくなった。
0312196
2008/10/19(日) 16:30:50ID:???・顧客がWebデザインを自分で更新したいと要望している
実力はへぼかも知れないが、お客様なので無碍にも出来ない
・プログラム開発も初期デザインも業者が行い納品する
・サーバは業者が貸与するので、壊されないように配慮しなければいけない
・ssh権限は与えず、ftpsでテンプレートファイルだけ更新できるようになっている
・プログラムの動作責任は業者が負わないといけない
・テンプレート更新内容のチェックに業者の人的コストは割けないので、
更新はノーチェックで行い、システムが正常動作しなくなった責任は顧客に負わせなければいけない
・テンプレートにはプログラムから変数を埋め込まなければいけない
・顧客はSmartyの心得と導入への理解がある
・Smartyのうち危険なタグをすべて洗い出し、設定で使用を禁止している
・テンプレートでエラーが出てもセキュリティ的に不適切な出力は行われないよう設定されている
それでも
・パラメタエラー
・クロスサイトスクリプティング
の問題は残り、特に後者はインタフェース側で検出する事が出来ない。
お客様が |escape を書き忘れただけで。
なので>>302の仕組みがあれば、完全に縛ることが可能だろうか、と思った。
でも、ここまで極端な事例でもない限り、デキル人を探した方が早いなぁ。
顧客には任意の静的HTMLを特定箇所にinclude出来る仕組みのみを提供するとか。
Smartyを縛るより、俺俺テンプレートエンジンのほうが早いじゃん、とか。
0313nobodyさん
2008/10/19(日) 17:55:19ID:???結局君がSmarty使いこなせてないだけじゃんww
100%の対策なんて無いんだから、対策しないって言ってるだけって事に気付けww
>デザイナーに権限を与えたくないなら、HTMLだけを納品させて、
>コードレビューとサーバへの設置はプログラマーがやればいいじゃん
デザイン修正の度にやるんすか。
>デザイナーにサーバへの書き込み権限を与えた時点で
当然、テンプレートディレクトリとシステムディレクトリで権限分けてるし。
ファイルに関しても基本的にはSVN経由で、本番には手動デプロイですよ。
消される恐れがあるとわかってて何故権限を与える?w
>Smarty単体ではシステムの仕様テストは行えないので、
わぁ、きっと君のところはMVC分けが出来てないんですね><
フレームワーク使えば大丈夫とか思ってるんですね><
0314nobodyさん
2008/10/19(日) 18:12:47ID:???>・クロスサイトスクリプティング
>の問題は残り、特に後者はインタフェース側で検出する事が出来ない。
>>>302の仕組みがあれば、完全に縛ることが可能だろうか、と思った。
default_modifiersやフィルタって知ってます?
>Smartyを縛るより、俺俺テンプレートエンジンのほうが早いじゃん、とか。
もうSmarty叩きはいいからさ
その安全で扱いやすい俺俺テンプレートエンジンを見せてよ。
君の主張は前提と具体性がないから水掛け論だよ…。
まさか専門学校生じゃないとは思うけど質問に具体的、箇条書きで答えてくれよ。
・プロジェクトの人数は?
・連携手法は?
・バージョン管理方法は?
・デプロイ方法は?
・使用しているPHPライブラリは?
・使用しているフレームワークは?
・使用している俺俺テンプレートエンジンは?
0315nobodyさん
2008/10/20(月) 12:22:54ID:???どうしてココは『隔離スレ』なの?
0316nobodyさん
2008/10/20(月) 12:27:38ID:???0317196
2008/10/20(月) 18:54:05ID:???煽っているように見えて>>311と同じ事を言っているように見える。
なので異論は無い。むしろ、まったくその通りだと思う。
>>314
default_modifiersは初めて知った。
nodefaultsと組み合わせれば、symfonyのescaping strategyに近い所まではいけるな。
escapeはプログラマーの責任でもなくデザイナーの責任でもなく、
フレームワークが基本的に便宜を図る、という解釈をすれば、悪くない思想だと思う。
後半については答えても意味が無いと思うし、
別にSmartyを否定する事が主目的で発言している訳ではないと言っている。
世の中にはSmartyを使うのに明らかに向かない案件もあるし、
そんなシチュエーションをわざわざ取り上げてSmartyを否定しても仕方が無いだろ。
逆に「Smartyを使うならこんな規模や状況やツールに最適だよ」という意見があれば、
それは主張してくれればいいと思う。
0318nobodyさん
2008/10/20(月) 19:11:06ID:???default_modifiersは問題がある(ソースに手を入れれば回避可能だが)から使わないって話なら聞くが
Smartyを3年使ってて知らないってどんだけ・・・
そもそもなんでこのスレにいるん?
0319nobodyさん
2008/10/21(火) 01:33:33ID:???>世の中にはSmartyを使うのに明らかに向かない案件もあるし、
>そんなシチュエーションをわざわざ取り上げてSmartyを否定しても仕方が無いだろ。
本当にそう思ってるなら196から出てくる発言はありえないと思うんだよね。
シチュエーションも取り上げずに、否定だけされても納得は出来ないじゃない?
「俺ならこうする」って意見も無しにダメだしされてもなぁ…default_modifiersすら知らないみたいだし、
単にSmartyの事知らないだけですよね?
議論では無く、相手を論破する事が目的になってませんか?
なんでこのスレにいるん?
0320nobodyさん
2008/10/22(水) 10:19:46ID:???相反する事言っているのに、なんで>>313に対しては異論唱えないんだ。
0321196
2008/10/22(水) 11:20:52ID:???>>318
そうだっけか。じゃあ使い物にならないから忘れたのかな。
いずれにせよSmarty使ってた頃は、そこまでいじる気自体が無かったな。
>>319
俺ならこうする、という意見も、具体的なコードも書いたし、
Smartyを否定する事が主目的でも無いし、Smartyのわからないところは質問した。
発言する前にきちんと流れを読んでくれ。
直近の議論は294,299,301,309,310,311だ。
>>320
> 当然、テンプレートディレクトリとシステムディレクトリで権限分けてるし。
> ファイルに関しても基本的にはSVN経由で、本番には手動デプロイですよ。
> 消される恐れがあるとわかってて何故権限を与える?w
という意向と>>311との違いは状況判断の部分だけ。
俺は手動デプロイなんていちいちしたくないので、
信頼のおける優秀なデザイナーと仕事をする。
だけど、信頼のおけないデザイナーと仕事せざるを得ないなら、
>>313の言うようにするのもわかる。
前提とか本人の置かれている状況が違うだけなので、特に反論は無い。
それとも、
「デザイナーには完全な制限と束縛を課して徹底的に管理しろ」
というのが一番言いたいことなのかな?
Smartyを使ってデザイナーを檻の中に隔離するんだ、みたいな思想なのかな。
0322196
2008/10/22(水) 12:12:03ID:???お言葉に甘えさせて戴き、整理させていただく。
俺が思う結論
・Smarty文法 {$name} のPHP文法 <?=$name?> に対する優位性
→メソッドチェインはSmarty文法が少し短いが、習得コストに大差は無さそう。
→short_open_tagを使いたくない/使えない場合はPHP文法が長くなるが同上。
・Smarty関数 {hoge} のPHP関数 hoge() に対する優位性
→車輪の再発明をする必要が無いのが利点。
→なので別のライブラリやヘルパーなどでも良い。
・Smartyのdefault_modifiersを使いビューのHTMLを安全にすること。
→設計と実装は不完全だが、フレームワークに任せるという考え自体は良いかも。
・ビュー用の変数構築とビューのHTMLファイルを分ける意義
→Smartyで実現するには{assign}{capture}{eval}を使えば可能。
→デザイナーに変数構築をやらせる前提では二度手間に感じる。
→プログラマーが変数構築を担当可能な所には意義があると思うし、
default_modifiersの不具合をフォローすることも出来そう。
・Smartyはデザイナーがシステムを壊さないよう完全に束縛できるか
→100%束縛したり管理するのは不可能そう。
→PHPコード実行の抑止の為にテンプレートエンジンを使うのは一応有効。
何か主張されたのかも知れないと思っていること
・Smartyや他の手段を駆使してデザイナーをシステムから隔離する事自体の意義
権限とリポジトリの管理と手動デプロイを常に徹底すれ
→俺は優秀なデザイナーを使うかHTMLで納品させるというアプローチ。
手動管理はめんどくさいし、たとえ客でも保守費用払わなかったらやりたくない。
0323nobodyさん
2008/10/22(水) 13:25:17ID:???「…で?」としか言えないわ。
0324nobodyさん
2008/10/22(水) 13:32:44ID:???結局使いこなせてないだけに一票。
「俺の環境ではSmartyが馴染まない」とか、凄くどーでもいい事なんで
こんな所でファビョってないで自作エンジンの制作作業に戻るんだ。
ここは君みたいな優秀なプログラマやデザイナが来ちゃいけない場所なんだ。
な。
0326nobodyさん
2008/10/22(水) 20:54:01ID:???使いこなせればどんな環境でも馴染ませられるよ。
出来ないのはヘボプログラマくらいだろうね。
君は何がしたいんだい?
Smartyを使う気がないなら、こんなスレにいる必要無いんじゃないのかな?
0327質問です
2008/11/02(日) 19:17:14ID:???for(i=0;i<6;i++){
echo "$_POST[$i]";
}
みたいなことをsmartyでやる場合、
{section name=i loop=5}
{$smarty.post.i}
{/section}
だと受けとれません。
$_POST[i] としてもだめなようで、
ループしてる回数を、POSTで受けとった配列のキーに割り当てるには
どう書けばいいんでしょうか?
0328nobodyさん
2008/11/02(日) 19:19:30ID:JfJ9McaH0329nobodyさん
2008/11/02(日) 20:49:20ID:???0330nobodyさん
2008/11/02(日) 21:45:09ID:???その前にpostはassignされてるのか気になるのだが・・・
0331327
2008/11/03(月) 23:53:06ID:CUNAecRE330さんの言うとおり、section.{sectionname}.index で
ループしてる回数を受けとれるのはわかるんですが、
その現在の回数をPOSTで受けとった配列のキーにするにはどのように書けばいいんでしょうか?
単なる配列をまわすときには、
{section name=i loop=$arr}
{$arr[i]}
{/section}
でいけると思うんですが、それがPOSTの配列の場合は一回assignしないといけないんでしょうか?
$smarty.post.キー で受けとれると思い込んでいたんですが。
0332nobodyさん
2008/11/03(月) 23:56:08ID:???0333nobodyさん
2008/11/14(金) 17:52:36ID:nqLSKBoWphp -r 'require "Smarty/Smarty.class.php";'
PHP: Error parsing /etc/php.ini on line 511
PHP Warning: require(Smarty/Smarty.class.php): failed to open stream: No such file or directory in Command line code on line 1
PHP Fatal error: require(): Failed opening required 'Smarty/Smarty.class.php' (include_path='.:/usr/share/pear') in Command line code on line 1
というエラーがでます。
パスは
UNIX: "/path1:/path2"
include_path = ".:/php/includes.:/usr/lib/php/Smarty-2.6.20/libs/"
こうしているのですが、
0334333の続きです。
2008/11/14(金) 17:53:36ID:nqLSKBoWchown 770 /var/www/html/smarty/templates_c/
chown nobody:nobody /var/www/html/smarty/cache/
chown 770 /var/www/html/smarty/cache/
<?php
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = '/var/www/html/smarty/templates/';
$smarty->compile_dir = '/var/www/html/smarty/templates_c/';
$smarty->config_dir = '/var/www/html/smarty/configs/';
$smarty->cache_dir = '/var/www/html/smarty/cache/';
$smarty->assign('name','Ned');
//$smarty->debugging = true;
$smarty->display('index.tpl');
?>
と持っていったのですが、どうしてエラーがでるのかわかりません。
教えてください
0335333の続きです。
2008/11/14(金) 19:12:47ID:nqLSKBoWPHP Warning: require(Smarty/Smarty.class.php): failed to open stream: No such file or directory in Command line code on line 1
PHP Fatal error: require(): Failed opening required 'Smarty/Smarty.class.php' (include_path='.:/php/includes:/usr/lib/php/Smarty-2.6.20/libs') in Command line code on line 1
もう一度インストールからはじめたのですが、だめでした。
お願いします。
教えてください
0336nobodyさん
2008/11/14(金) 19:56:05ID:???/usr/lib/php/Smarty-2.6.20/libs/Smarty/Smarty.class.php
の場所にこのファイルはあるのか?
0337333の続きです。
2008/11/14(金) 19:56:14ID:nqLSKBoW疲れました
0338nobodyさん
2008/11/15(土) 22:34:31ID:???それが完成したアカツキには、レンタルサーバーにも
smartyをアップロードしないと動かないの??
0339nobodyさん
2008/11/15(土) 22:40:28ID:???されてなきゃ自前でアップロードしろ
0340nobodyさん
2008/11/16(日) 14:34:54ID:VgwBTNK+一体何をincludeするつもりなのか
0341nobodyさん
2008/11/17(月) 21:26:39ID:WEpi9J1Iそんで、そのカスタムタグつくったから適当に使ってよ、とクライアントに投げるの。
好き嫌いは有るけど、生phpより見やすいわけね。
OK?
0343nobodyさん
2008/11/18(火) 06:18:46ID:???テンプレートエンジンの理想型だよな。
PGにもデザイナにも優しい。
Smarty3で速度面が大幅改善されるっぽいので期待している。
0345nobodyさん
2008/11/19(水) 04:25:55ID:???0346nobodyさん
2008/11/20(木) 11:05:10ID:WBdj1Bs+このような場合、みなさんどうしてます?
テンプレート側でphpファイルを読み込んで出力させることは可能なのでしょうか?
0348nobodyさん
2008/12/03(水) 23:41:44ID:???0350nobodyさん
2008/12/05(金) 11:52:26ID:jMVHCYUrtemplate は複数(サブディレクトリに1つずつ置く)、template_c は 非公開部分に1つ、ってやりたいんですが。
0351nobodyさん
2008/12/05(金) 13:30:34ID:???0352350
2008/12/05(金) 14:12:47ID:jMVHCYUrおとなしく対応させて作ります。
ありがとうございました。
0353nobodyさん
2008/12/05(金) 20:37:51ID:???コンパイルID指定すればOK
http://www.smarty.net/manual/ja/api.fetch.php
0354nobodyさん
2008/12/06(土) 01:16:24ID:???メリットがまったく思いつかないけど覚えておきます
0355nobodyさん
2008/12/06(土) 01:36:14ID:???0356nobodyさん
2008/12/07(日) 09:29:45ID:???sfCutString:5とかにすると5文字表示とかってあるよね?
これって反対に、後ろからの5文字を削除とかって出来ないの?
教えてくださいな(´・ω・`)
0357nobodyさん
2008/12/08(月) 09:59:13ID:???0358nobodyさん
2008/12/08(月) 16:34:14ID:???0359nobodyさん
2008/12/08(月) 23:18:30ID:???0360nobodyさん
2008/12/09(火) 12:27:40ID:???0361nobodyさん
2008/12/22(月) 09:45:58ID:???smarty使いの方、smartyがなかったら、どのテンプレートエンジンを選択しますか?
人それぞれ状況は違うと思うんで、pureにみなさんそれぞれの場合は?
0362nobodyさん
2008/12/22(月) 13:12:51ID:???0363nobodyさん
2008/12/22(月) 13:56:20ID:fwOoSy8e多分テンプレート変数を置換する以上のことはできないだろうけど
0364nobodyさん
2008/12/31(水) 21:47:49ID:8KFb7g3b動作させてる環境は2つあり、動かないのはそのうち一つだけです。
Smarty.class.phpへのパスは相対できちんと通していて、同じファイルを
その2つにUploadすると片方でのみ動いてくれません
もちろんそちらでもphpは動いてるんですが、、
原因を探る方法はないでしょうか?
phpが動くサーバなら動くはずなんですよね?
文字コードとかは関係あるでしょうか?
現状では
$smarty->assign('testvar','テスト');
echo "ここまでOK1";
$smarty->display('sample.tpl');
echo "ここまでOK2";
とすると、 「ここまでOK1」だけ出力します「2」はしません
また、せめてassignがちゃんと成立してるかだけでも知りたいですがどうしたら
いいでしょうか? ご意見よろしく御願いします
0366nobodyさん
2008/12/31(水) 23:02:30ID:???911では小型の水爆が使用されている。
http://ri■ch■ardkosh■im■izu.at.webry.info/
創価の保険金殺人事件。
オウム事件は、統一・創価.北朝鮮の共同犯行である。CIAが監修している。
http://www15.ocn.ne.jp/~oy■ako■don/kok_web■site/ir■iguc■hi.htm
与党も野党もメディアも全部朝鮮人だった。
http://jb■bs.li■vedo■or.jp/b■bs/read.cgi/news/20■92/115794■1306/
2ちゃんねるは統一■教会が個人情報を集めるための道具。運営には統一■教会がいる。
駅前で「手相を見せてください」と勧誘してるのが統一教■会。(カルト宗教)
カルト宗教の下にいる人と上にいる奴を分けて考えないといけない。下にいる利用される人は上がどんなことをしてるか知らない。
ユダヤ権力の子分→2ちゃん運営=統一協会上層部=層化上層部=自民党清和会=野党の朝鮮人ハーフの政治家=
与党の朝鮮人ハーフの政治家=金 正日(キム・ジョンイル )=読売サンケイ=小沢十朗
ユダヤ人=ロックフェラー=ブッシュ=クリントン=ヒラリー=アドルフ・ヒトラー=オサマ・ビンラディン
毎日新聞スレを荒らしてる奴らも統■一教会の可能性が高い。
荒らしは洗脳するために「ネトウヨ」などのレッテル付けレスを何千回もする。
現実には「ネトウヨ」などは存在しない。
http://changi.2ch.net/test/read.cgi/ms/1230363385/
0368nobodyさん
2009/01/02(金) 21:57:29ID:PIvYRgwW$monthAry[] = "1月"; から $monthAry[] = "12月"まで配列にして
$smarty->assign('monthAry',$monthAry); としました。
formを出力するテンプレートファイルでは以下のようにして、プルダウンのoptionに出力しています。
{foreach from=$monthAry item=var}
<option value="{$var}">{$var}</option>
{/foreach}
この書式で、確認画面からの戻り値{$month}(assign値です)とoption要素のvalueが等しければselectedと
するために以下のようにしたんですが、あまりきれいなソースじゃないと思います
{foreach from=$monthAry item=var}
<option value="{$var}"
{if $var==$month}
selected="selected"
{/if}
>{$var}</option>
{/foreach}
一応ちゃんと動いてますが、もっときれいで効率的な書き方はないでしょうか?
0369nobodyさん
2009/01/02(金) 22:04:07ID:???http://www.smarty.net/manual/ja/language.function.html.select.date.php
0372nobodyさん
2009/01/04(日) 08:20:15ID:S9BZj0MW{$name|escape} とすれば上記のとおり見れますよね。
これを、修正画面に持ち越したいときはどうしたらいいんでしょうか?
<input type="hidden" name="name" value="{$name}" /> だと確認画面で表示がおかしくなるし
<input type="hidden" name="name" value="{$name|escape}" /> だと修正画面の
inputの表示がおかしくなるし、、
ご意見よろしく御願いします
0373nobodyさん
2009/01/04(日) 08:53:47ID:???0375モンピー77
2009/01/05(月) 09:16:41ID:mGW0zuF3しているのですが
$o_smarty->default_modifiers = array( 'escape:"html"' );
配列にも適用させること可能なのでしょうか?
みなさん、Smartyを使った場合のサニタイズはどんな風にされていますか?
0376nobodyさん
2009/01/05(月) 11:59:56ID:???default_modifires はクセがあるから気をつけたほうがよいよ。
{foreach}とか{assign}で変数弄ると二重にエスケープされちゃったり、配列入れるとエラー吐いたりする。
>Smartyを使った場合のサニタイズはどんな風にされていますか?
基本的には必要な箇所全てにescapeを書いてる。
上記踏まえて、面倒な事にならない場合だけ default_modifires 使ってる。
0377nobodyさん
2009/01/07(水) 10:21:31ID:nbhiW1pdそもそもPHP側ですませておく。
なんのために分離してるのかと
0378nobodyさん
2009/01/07(水) 11:39:38ID:???0379nobodyさん
2009/01/07(水) 12:32:40ID:???0381nobodyさん
2009/01/08(木) 13:16:48ID:???0382nobodyさん
2009/01/08(木) 14:37:59ID:/Ay52XkKお前が暇人なだけだろw
0386nobodyさん
2009/01/09(金) 13:26:05ID:dxaSQaiQ必死厨必死だな。
「みなさん、Smartyを使った場合のサニタイズはどんな風にされていますか?」
この意味わかるか?
0387nobodyさん
2009/01/09(金) 14:19:53ID:???0388nobodyさん
2009/01/10(土) 01:02:19ID:???スマン。日本語でお願い出来るか?
どういう意味で解釈したら
「そもそもPHP側ですませておく。なんのために分離してるのかと」
となるんだい?
0389nobodyさん
2009/01/15(木) 22:45:35ID:iReMhog8assignもdisplayも動かないというか、それ以前に
templatesディレクトリの指定とかがうまくいってるのかがわからないです
そういう設定が今どうなっているのか、確認する方法はないでしょうか?
ちなみに今のsmarty.class.phpへの接続は以下のような形です
<?php
//テスト
require_once('Smarty.class.php');//これでSmarty.class.phpに繋がってることは確認済みです
class MySmarty extends Smarty{
function MySmarty(){
$this->Smarty();
$mydir = dirname(__FILE__);
$this->template_dir = $mydir."/templates/";
$this->compile_dir = $mydir."/templates_c/";
$this->config_dir = $mydir."/configs/";
$this->cache_dir = $mydir."/cache/";
$this->caching = 0;
}
}
?>
これを、各phpからrequireさせています
0390389
2009/01/15(木) 23:24:27ID:iReMhog8require_once('MySmarty.class.php');
//Smartyクラスのインスタンス作成
$smarty = new MySmarty();
echo "テンプレートディレクトリ:".$smarty->template_dir;
としたら、正しいパスを読み込みました
これはSmarty.class.phpも読み込み成功してるってことですよね?
どうしてdisplayしないんだろう。。
どなたかご意見ください
一つのディレクトリに複数の/smartyディレクトリが存在しちゃいけないとかの
理由はないですよね?
0391nobodyさん
2009/01/15(木) 23:29:20ID:iReMhog8×正しいパスを読み込みました
○正しいパスを出力しました
×一つのディレクトリに複数の…
○一つのサイトに複数の…
また、require_once()してるのが389のプログラムのファイルです(MySmarty.class.php)
0392nobodyさん
2009/01/15(木) 23:35:13ID:???0393nobodyさん
2009/01/16(金) 00:01:11ID:7rtqusgxどうもです
パーミッションて奴ですよね? 700とか750で設定して試したんですがダメでした
そのものずばりで、displayに失敗してる、assignに失敗してる とはっきりわかる方法ないかなぁ
0394389
2009/01/16(金) 02:58:12ID:???<style type="text/css">
<![CDATA[
a:link{color:blue;}
a:focus{color:red}
a:visited{color:purple;}
]]>
</style>
という部分があったためでした。これを削除すると正常にdisplayされました。
念のため、この.tplのソースをコピペしてtest.htmlをつくり、それを直接開くと
どのブラウザでも確認できました
どうやら、Smartyと上の記述の組み合わせでのみエラーになるようです(理由はわからない)
このページは携帯用で、
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
って感じにXML宣言のあるxhtmlだったんですが、この中では<!-- -->は使えないって言うので
上記の形(<![CDATA[ ]]>)にしたところエラーになりました
1)XML宣言
2)携帯用サイト(外部CSS使えない→1)のせいでコメントは<![CDATA[ ]]>にならざるを得ない)
3)Smarty
という組み合わせは実用不可能というお話でした
0395nobodyさん
2009/01/16(金) 06:34:07ID:???ttp://www.phppro.jp/phpmanual/smarty/language.function.literal.html
0396nobodyさん
2009/01/16(金) 14:02:35ID:???0397nobodyさん
2009/01/16(金) 23:45:16ID:???Smarty解釈をしないプレーンな{include}があってもいいんじゃないかという気がしてきたがあったっけ。
0398nobodyさん
2009/01/19(月) 11:16:42ID:RBlPIEnmみんクエのようなRPGタイプのブラウザゲームを制作予定です。
常に値が変動して最新の情報を表示しないといけないケースで、
Smartyを使用するのはナンセンスでしょうか?
0399nobodyさん
2009/01/19(月) 11:19:59ID:???0400nobodyさん
2009/01/19(月) 15:19:03ID:???重要なのはメンテナンス性だな、かえってテンプレ化しづらい場合もあるし・・・
■ このスレッドは過去ログ倉庫に格納されています