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

【PHP】Smarty【Template】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/03/10 00:57ID:NhgrjNBT
このスレ、あってもいいんじゃないかと。

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

日本語マニュアルとか
http://sunset.freespace.jp/smarty/
0696nobodyさん05/03/16 10:24:48ID:???
使ったことある。結構良いんだけど、自由度が足りない。
記述方法なんかは、スマーチーと似た感じ。ドットがスラッシュになった感じだったかな。
ロジックの追加とかも簡単、まあそれでも自由度が低い。elseとかやりたいなら2、3層前とかから書き直さないといけないから、意味ないし。
0697nobodyさん05/03/16 18:40:40ID:???
>>695
HTMLtemplateのくわしい話MLに、最近ひさびさに
メール流れた〜と思ったら。SPAMでした…orz

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

前提が間違っとる。

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


Viewの機能を受け持つ以上、あの程度のロジックは書けないと俺が困る。
■ このスレッドは過去ログ倉庫に格納されています