【PHP】Smarty【Template】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/03/10 00:57ID:NhgrjNBT本家(英語)
http://smarty.php.net/
日本語マニュアルとか
http://sunset.freespace.jp/smarty/
0673nobodyさん
05/03/13 19:56:38ID:???0674nobodyさん
05/03/13 20:08:38ID:???・・・「かいてる」の変換候補一発目がなぜか「Keitel」でびびった。
0675nobodyさん
05/03/13 21:11:31ID:???PHP界隈でも結構書いてる。ライター一本でちゃんと食っていくのには
そのぐらい書かないと駄目なんだなと、いつも思い知らされる訳だが。
0676nobodyさん
05/03/13 22:03:03ID:???それともMojaviとか使ってるのかな?
0678nobodyさん
05/03/13 23:20:57ID:???$smarty->display([テンプレートファイル名]);
とやると標準出力(ブラウザ)にHTMLが出力されますが、
これをファイルに出力させることはできるのでしょうか?
0679nobodyさん
05/03/13 23:28:24ID:???ttp://d.hatena.ne.jp/nadi/20040215#1076810117
ttp://d.hatena.ne.jp/nadi/20040306#1078484912
0680nobodyさん
05/03/13 23:54:01ID:???でもこの人が書いた基礎PHPって本はホント良いよ。
初心者には超オススメ。
でもtemplate_cのパーミッションを777にしろって
書いてあったのはポカーンだったけど。
0681nobodyさん
05/03/14 00:39:54ID:???ゴミ同然。買うな。
だいたいPHP5とか明示しててちゃんとPHP5のスタイルで書いてる書籍なんて
いまのところ一冊もない。Smartyが覚えたかったらマニュアルみれ。
日本語に翻訳されたドキュメントもあるしぐぐれば使い方はたくさんでる。
PHP5関連の内容についてはマンモス本の劣化コピー。
>>674
まるごとPHPが有名なのはPEARパッケージの開発者とかが執筆してるから。
コミュニティに一切貢献してない彼が執筆メンバにいることがかなり不思議。
http://angelicwing.net/diary/index.php?mode=one&parent_id=3801
MVC自体わかってない。わけたらいいってもんじゃない。
valueobjectって、、便利だと思ってるの?
そしてコメント欄に注目。PHPにおけるmysqlのdisconnectについて
まったくわかってない。明示的に指定しないのは常識。
>>680
現場でPHPのコード書いた事ない人間の書籍でよく勉強できるよな。
そうやってマニュアル読んだだけの素人が書いた書籍で勉強した
ダメプログラマがダメコードを作る。
この程度のレベルの人間が書籍を書いていることが問題。
でも(趣味で触るだけの)初心者にはいいかもね。
どっちでもいいよ。
connectする -> プログラム終了とともに切断
pconnectする -> disconnectは無視する
だから、どちらにしろあまり意味ないと思うです。
0684nobodyさん
05/03/14 01:10:40ID:0xZUZ/dg0685nobodyさん
05/03/14 01:29:18ID:???PHP以外の言語にも手を出そうというならなおさら(GCが増えてきたにしろ)
致命的な差異が出ないなら、初心者の頃はそういう考えから身につけてもいいんジャマイカ
ちなみに漏れは書くのめんどいので閉じないことが多い
0686nobodyさん
05/03/14 02:11:46ID:???でも非機能要求を絶えず意識する癖なんて持っても PHP/web アプリで量的に重いコードを設計する人になられても困る。
ソレはソレ、コレはコレじゃないか。
原理原則やデータベース個々の基礎知識は弁えて当然というのはまた別のプロセスでしっかり身につける方が。
0687nobodyさん
05/03/14 02:56:18ID:???0688686
05/03/14 03:46:48ID:???0690678
05/03/14 11:14:44ID:???なるほど、検討してみます。ありがとうございます。
昨晩から試行錯誤を繰り返し、
現在のところoutputfilterで、出力直前の文字列を横取りし、
ファイルに吐き出すという、ややトリッキーな方法を行っています。
0691nobodyさん
05/03/14 11:51:06ID:???0692nobodyさん
05/03/14 21:41:11ID:???参照している範囲が明確になるという点もあるので「クローズ・削除
しない方が性能的に有利かつPHP的な使い方」というのはアホの理論。
0695nobodyさん
05/03/15 17:25:00ID:???http://www.lyricfathom.com/htmltemplate/
0696nobodyさん
05/03/16 10:24:48ID:???記述方法なんかは、スマーチーと似た感じ。ドットがスラッシュになった感じだったかな。
ロジックの追加とかも簡単、まあそれでも自由度が低い。elseとかやりたいなら2、3層前とかから書き直さないといけないから、意味ないし。
0697nobodyさん
05/03/16 18:40:40ID:???HTMLtemplateのくわしい話MLに、最近ひさびさに
メール流れた〜と思ったら。SPAMでした…orz
2年近く放置してる作者も、それに登録したまんまの俺もどうかしてますが。
あ、でも新しい系列になって発展してたんですな。
俺の感想も>>696に似たようなもんだけど、
元々の割り切りからも考えるに、プログラマからすると
どうしても物足りなさはある。かといって発展拡張を考えるなら
高機能な標準的なテンプレートを使っちまう方が良いし というところ。
でも自分用の軽量なテンプレには部分的にはパクらせてもらった。
テンプレートを使うんじゃなくて、テンプレートを作る上で
参考にするのは良いと思うよ。作りが簡単だし。
0698nobodyさん
2005/03/26(土) 16:50:17ID:9cvI6Qz8123456789
というデータをphpからうけとったのを
456
のところだけ切り取って出力するような・・・
0700nobodyさん
2005/03/26(土) 17:01:27ID:9cvI6Qz8なるべくなら使わないでいたいんですけど、
それがいいのかなぁ
0703nobodyさん
2005/03/26(土) 17:13:51ID:9cvI6Qz8レスありがとうございます。
http://sunset.freespace.jp/smarty/SmartyManual_2-6-3J_html/
にはsubstrは無いみたいですけど、>>699さんの方法か
何かで定義しなくても使えるものなんでしょうか?
教えて君で申し訳ないです。
0705nobodyさん
2005/03/26(土) 17:25:59ID:9cvI6Qz8まじすか。
ありがとうございます。使ってみます−
0706nobodyさん
2005/03/26(土) 17:32:21ID:???$securityをtureにしてると$security_settingで指定しないと使えないから気をつけろよ
0707nobodyさん
2005/03/26(土) 17:33:45ID:9cvI6Qz8と、書いてみたのですがエラーになってしまいます。
{$hoge}だと123456789と表示されます。
使い方間違ってるのでしょうか?
0708nobodyさん
2005/03/26(土) 17:34:13ID:9cvI6Qz8あ、それかも。みてみますー
0709nobodyさん
2005/03/26(土) 17:39:51ID:9cvI6Qz8もしかして、その設定はtpl上で変更するのは無理でしょうか?
私がいじれる権限があるのはtplのみなので鯖管理者に
お願いしないとだめでしょうか?
0712nobodyさん
2005/03/31(木) 01:53:29ID:D4Jqx9KWsmartyで読み込んだhtmlの<head></head>のなかに覧の文字が
あると、エラーになってしまいます。
\とか\""\などでかこってみたりしたのすが、駄目でした。
どなたか回避方法をご存知ないでしょうか・・・?
よろしくお願いいたします。
0714nobodyさん
2005/03/31(木) 02:34:14ID:D4Jqx9KWううぅ。このスレを通しで読んでみたのですが
わからなかったのです。
mbstring.http_output をSJISに、というのが
ソレかな、と思ったのですが、Smarty.class.php
の中に、mbstring.http_output なんてなかったぅ。
php.iniとhttpd.confはSJISに変えてみたのです。
0716nobodyさん
2005/03/31(木) 11:32:56ID:???みんなどうしてるの?
タグを変えてるとか?
はやくマルチバイトに
完全対応してくれないかな
0717nobodyさん
2005/03/31(木) 11:39:58ID:???0718nobodyさん
2005/03/31(木) 12:33:56ID:???0719nobodyさん
2005/03/31(木) 14:50:48ID:???テンプレートもコードもDBもすべてEUC-JPで統一。
出力の段階でSJISにして吐く、ってのは?
print mb_convert_encoding($smarty->fetch('index.tpl'), 'SJIS', 'EUC-JP');
とか、またはアウトプットフィルタで以下のようにするか。
function convert_to_sjis($output, &$smarty)
{
return mb_convert_encoding($output, 'SJIS', 'EUC-JP');
}
$smarty->register_outputfilter('convert_to_sjis');
$smarty->display('index.tpl');
0720nobodyさん
2005/03/31(木) 17:13:50ID:???同じ問題がでるだろ?
0721nobodyさん
2005/03/31(木) 22:31:52ID:???ttp://ns1.php.gr.jp/pipermail/php-users/2003-February/013592.html
デリミタを他の文字に変えても可。<% %>とか。
0722714
皇紀2665/04/01(金) 05:48:12ID:jghdOqLB出来ました!ありがとうございました。
0723714
皇紀2665/04/01(金) 21:04:31ID:jghdOqLBなんでしょうか。この現象は。びくびく。
0724nobodyさん
皇紀2665/04/01(金) 22:04:34ID:???0725nobodyさん
2005/04/02(土) 19:13:00ID:???0726nobodyさん
2005/04/03(日) 12:34:52ID:5tuC+LFkttp://www.netsecurity.ne.jp/1_2283.html より
▽ Smarty------------------------------------------------------------
Smartyは、regex_replace変換機能が適切なチェックを行っていないことが原因で
セキュリティホールが存在する。この問題が悪用されると、
攻撃者にテンプレートセキュリティコントロールを回避して任意のPHPコードを実行される可能性がある。 [更新]
2005/03/29 登録
危険度:高
影響を受けるバージョン:2.6.8未満
影響を受ける環境:UNIX、Linux、Windows
回避策:2.6.8以降へのバージョンアップ
っていうことは、regex_replaceを使ってないか、
勝手に他人がテンプレートを変更できる環境でなければ大丈夫ってことかな?
現状、平穏無事に動いているものをアップデートするって勇気がいるよね。。。
0727nobodyさん
2005/04/03(日) 14:50:09ID:???当たり前の事だと思うんだが。
0728nobodyさん
2005/04/03(日) 15:07:18ID:???当たり前の事だと思うんだが。
0730nobodyさん
2005/04/03(日) 16:56:18ID:???コンピュータ分野だとまぁその通りなんだけど、セキュリティーホールが見つかって
その穴を埋めないのは保守する上で過失にならないか?
0731nobodyさん
2005/04/03(日) 19:02:00ID:???むやみに変更しないというのは運営者としては正しい判断だろう
頭を使える人はアナウンスをよく見てどちらのリスクが高いか考えるはず、
Apacheにしたってバージョンアップで不具合が起こった事は何度もある
緊急以外の件に関してはしばらく様子をみてやるのが賢い人だと思うね。
0732nobodyさん
2005/04/04(月) 04:24:04ID:???自分側の仕様変更やらで、忘れた頃にあらまあなんて事もあるからね。
さっさとアップデートしておくのが無難だと思うけど。
0733nobodyさん
2005/04/04(月) 05:11:45ID:???それこそ「動いているものを無闇に変えない」を
自分の書いてるプログラムにも適用ですよ。
とはいえ、自分がPHPを使うメインは個人的な便利なツールの作成だから、
PHP環境は実験的実装上等「常に最新」ですけどね。
0734nobodyさん
2005/04/04(月) 11:47:50ID:???現状維持で保守的になっていくわけですね
0735nobodyさん
2005/04/04(月) 13:46:26ID:???Webアプリって個人やSOHOで開発されてるケースが多いけど
数年後に変更しようにも業者が倒産したとか会社はあっても開発者が退職したとか仕様書が無い、といった具合でよくわからなくなってるのが多いよ
たまになんとかなりませんか? って話が来るけど殆どは予算無いっていうから
根本的な解決はせず無理やりつじつま合わせで対処することも多いよ。
話題がかなりそれちゃったな、ごめん。
でもSmartyとはツール使ってれば有る程度は標準的な手法でつくられている事が多いのでまだマシだよね。
0736nobodyさん
2005/04/04(月) 15:53:31ID:???そういうのに限って中見たら
崩れかけのジェンガみたいになってるよな
これでよく動いてるなみたいな
見た目はお城だからクライアントは
すぐ直せるでしょみたいな雰囲気で持ちかけてくるしな
ってこれただの愚痴だな、、、
PEARやSmarty使ってるならまだいいよ。。。
0737nobodyさん
2005/04/04(月) 16:13:20ID:???0738nobodyさん
2005/04/21(木) 21:02:24ID:SxD/0C5USmartyってPHPの標準じゃないんだろ?
普通はPHPの標準ライブラリであるPEARのHTML_Template系を
つかうべきじゃないのか?
0739nobodyさん
2005/04/22(金) 01:38:38ID:???0740nobodyさん
2005/04/22(金) 05:01:10ID:xlQLPR84中規模程度以上のサイトでSmarty使ってる人いる?
将来開発が止まってしまうかもしれない、というリスクはあるから
中核に組み込むのはどうなのかと思ったりするんだけど
0741nobodyさん
2005/04/22(金) 05:02:58ID:???0742nobodyさん
2005/04/22(金) 07:43:32ID:NegODiovどなたか教えて下さい。
Smartyでテーブルを表示させているのですが、
テーブルセルの縦(height="25")の指定はちゃんと反映されて
いるのですが、横幅(width="100")が無視されてしまうのです。
日本語サイトなどをめぐってみたのですが、解決策が
見つからなくて・・・。
どうかご指導よろしくお願いいたします。
0744742
2005/04/22(金) 09:25:44ID:NegODiovいえ、それが、HTMLだと問題なく表示されるのですが、
PHPからSmarty(tplファイル)として読み込むと
とたんに横幅が無効になってしまうのです。
0745nobodyさん
2005/04/22(金) 09:55:43ID:???0747nobodyさん
2005/04/22(金) 12:02:00ID:1X8ubYE4pearに登録されているからって開発中止にならんという訳じゃないよ
メンテナがやる気をなくせば開発は止まるのは一緒。
0748nobodyさん
2005/04/22(金) 13:07:51ID:???複雑なものでもないし、自分で修正できるんじゃない?
つーか、もう安定して枯れてると思うし。
0749742
2005/04/22(金) 13:59:44ID:NegODiovレスありがとうございます。
テストしているのは、下記のコードで、拡張子をhtml から
tplに変えたのみなのです。
phpでは $smarty->display("test.tpl"); で読み込んで
います。
よろしくお願いいたします。
0750742 コードです。
2005/04/22(金) 14:00:16ID:NegODiov<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>新しいページ 1</title>
</head>
<body>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#C0C0C0" width="300">
<tr>
<td width="200" height="20" bgcolor="#8284CE"> </td>
<td width="50" height="20" bgcolor="#8284CE"> </td>
<td width="50" height="20" bgcolor="#8284CE"> </td>
</tr>
<tr>
<td width="200" height="20"> </td>
<td width="50" height="20"> </td>
<td width="50" height="20"> </td>
</tr>
<tr>
<td width="200" height="20"> </td>
<td width="50" height="20"> </td>
<td width="50" height="20"> </td>
</tr>
</table>
</body>
</html>
0751nobodyさん
2005/04/22(金) 14:11:23ID:???手元の環境ではそういう現象は起きなかった。
試すまでもなく、普通に考えても起きるわけないんだけどなぁ。
>>746が聞いてるけど、テンプレートとsmarty出力結果の差異はどうなのよ?
0752nobodyさん
2005/04/22(金) 14:15:18ID:???ブラウザが見てるHTMLを比較してみな。
具体的には、各々のHTMLをブラウザのソースを表示を使って取得して、それらを比較するって事ね。
0753742
2005/04/22(金) 14:40:09ID:NegODiovレスありがとうございます。
ソースを表示で見る事は思いつきませんでした_| ̄|○
さっそく見てきたのですが、きっちりwidth="50"だけが
消えていました。
なんでなのか、まったく想像がつかないです。
Smartyの嫌がらせとしか思えないです・・・・。
0754nobodyさん
2005/04/22(金) 14:44:53ID:???なんでもそうだけど、プログラミングってのは、鏡だと思うと良いよ。
自分のやった事が、そのまま反映されてるだけだよ。
後、デバックの極意なんだけど、コーヒーでも淹れて、一服しな。
これは、本当に良く効く。いや、マジで。
0755742
2005/04/22(金) 14:49:47ID:???ありがとうございます。 そーいえば2日徹夜でした。
気がつけばすごい眠いかもです。
・・・せっかくの有給なのに!なんてこったいです_| ̄|○
一回、寝てみます。
0756nobodyさん
2005/04/22(金) 15:38:04ID:???0757742
2005/04/23(土) 08:45:37ID:???おきてから、ふと思い立ってセルに折り返し無し指定を
付けてみたら、意図した横幅で表示できました。
ご指導してくださった皆様、ありがとうございました。
0760nobodyさん
2005/04/23(土) 16:06:08ID:???こんなところにたって雑談している女いると
↓
机 机女 机 机
女
机 机 机 机
わざわざここを通って女の尻にちんぽ擦りつけながら通った
↓
机 机女 机 机
女
机 机 机 机
0761nobodyさん
2005/04/23(土) 18:16:06ID:???0762nobodyさん
2005/04/24(日) 16:48:56ID:f26GRMZz{foreach}{/foreach}なんかのループから抜けるにはどうしたら
よいのでしょうか。
php で言う break; がしたいのです。
0763nobodyさん
2005/04/24(日) 18:32:34ID:???0764nobodyさん
2005/04/24(日) 18:43:22ID:f26GRMZzありがとうございます。そういうことではなくて、
{foreach}
{if $hoge == $fuga}
{break}
{/if}
{/foreach}
といったような{break}なんてのがあればいいのですが、無いですよね。
相当するものってありますでしょうか。
0766nobodyさん
2005/04/24(日) 21:22:02ID:???僕もassign or appendする前に処理しとくべきだと思うが、
無理矢理やるならこんなかな
{eval var=0 assign="a_break"}
{foreach from=$a_array item=a_item}
{if $a_item == '以降break'}
{eval var=1 assign="a_break"}
{elseif $a_break==0}
{$a_item}
{/if}
{/foreach}
0767nobodyさん
2005/04/24(日) 22:05:50ID:???0768nobodyさん
2005/05/02(月) 03:39:29ID:zPNJQI1Nないのでしょうか?
0769nobodyさん
2005/05/05(木) 23:04:03ID:HD8kZxJB離れた場所に何度も出てくる要素を、サブルーチン呼び出しみたいに
一元的に記述したいんだけど。
あらかじめmodelで処理しておけばいいのかもしれないけど
視覚的要素だからテンプレートの中に入れておきたい
0770nobodyさん
2005/05/05(木) 23:25:33ID:???0772nobodyさん
2005/05/06(金) 00:15:12ID:???いや、まぁ、デザイナと喧嘩してるんでもなきゃ別に問題ないんだけどね。
■ このスレッドは過去ログ倉庫に格納されています