【PHP】Smarty【Template】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
03/03/10 00:57ID:NhgrjNBT本家(英語)
http://smarty.php.net/
日本語マニュアルとか
http://sunset.freespace.jp/smarty/
0002nobodyさん
03/03/10 01:01ID:???コンテンツとデザインの分離はしばらく物議かもしそうだし
解決策の1つとしてsmartyいいかもね。
ついでに2げっと。
自分が引っかかったところ。
青マンモス本の時点ではループ指定(テンプレート側)するときに
{$loopname/variable}
だったのが
{$variable[loopname]}
になってる。
$varibableが連想配列なら
{$variable[loopname].arrayname}
こんな感じ。
0005nobodyさん
03/03/11 00:06ID:???キャッシュを作らずにHTMLを吐き出す方法はないでしょうか?
0006nobodyさん
03/03/11 17:04ID:???0007nobodyさん
03/03/11 17:06ID:???よくわからんが、コンパイルされたファイルとキャッシュされたファイルは別物だが。
キャッシュを作らずHTMLを作るとはどういうこと?
毎回コンパイルするようにしたいなら、設定変えればできるぞ。
0008nobodyさん
03/03/11 17:07ID:???http://sunset.freespace.jp/smarty/
↑ここもマジで感謝!!
0009nobodyさん
03/03/11 17:09ID:???XOOPS 日本の公式サイト
http://jp.xoops.org/
0010nobodyさん
03/03/11 17:25ID:???0012nobodyさん
03/03/11 17:38ID:???>より明確にphpのプレゼンテーションからアプリケーションの ロジックとコンテンツを分離して管理する事を容易にします。
>これはプログラマーとテンプレートデザイナーの役割が異なる 状況か、
>たいていの場合は同じ人間ではないのが最良だという事です。
こう書いてあったんだけど、つまり役割が同じ場合はこれ用なし?
0016あぼーん
NGNG0019nobodyさん
03/03/12 01:12ID:BE9nbHm+の機能があったらかなりイイのだが
も前らPHPではフォームに値付けるのどうされてますか?
PHP版HTML::Template
http://sourceforge.net/projects/phphtmltemplate/
0020あぼーん
NGNG0021nobodyさん
03/03/12 05:18ID:???自分の場合はデザインとコードの分離のため。
HTMLを書く人間が別にいる場合、分離していないと
かなり面倒なことになる。
そのあたりの議論は
http://pc2.2ch.net/test/read.cgi/php/990953955/
こっちでかなりやっていた気がする。
0023nobodyさん
03/03/12 11:09ID:???002421
03/03/12 11:35ID:???そうそう、前そこのスレでsmartyスレ立てようって言ってたんだけど
あんまりユーザがいないようだから。
でもXOOPS2でsmarty採用したから使う人が増えるかもね。
0025nobodyさん
03/03/12 16:12ID:???デザイナーは、はたして使えるのか?と思うけど、
つか、HTMLテンプレートのほうが分かり易いのかな?と思ったり、
両方使った事ある人どう思う?
0026あぼーん
NGNG0027nobodyさん
03/03/12 17:11ID:???0028nobodyさん
03/03/12 17:31ID:???perl,phpは楽だよな。>>27のいうことも分かる。
問題はデザイナーが単独でphpスクリプトを修正できるかというと
そこまで簡単じゃないってことだな。
プログラマ・デザイナの両方の負担の釣り合いが取れるところがsmartyなんじゃないの?
0029nobodyさん
03/03/12 18:11ID:???MVCってのがある。
V(View)はMからデータを呼び出すだけで単独では通常計算を行わない。
と言うことになっている。
表示すべき項目を$dataと言うハッシュに詰め込んで、
「データは<? print($data["name"]);?>で表示させられるよ。」
とか言っちゃえば良いと。
デザイナがJavaScript位は出来るだろうと(Web制作の某スレではこれはデザイナの仕事ではないらしい。(藁)仮定すると
PHPの豊富な制御構造くらい使いこなせるだろう。
こうしてみるとその辺の下手なテンプレート機構より遙かに強力でしかも汎用的だ。
JSPと同じ思想でPHPを使っちゃおうというのが俺の言いたいこと。
0030nobodyさん
03/03/12 21:31ID:???折角Smartyのスレたったんだし、Smartyの話しようや。
0031nobodyさん
03/03/12 23:50ID:???0032nobodyさん
03/03/13 00:42ID:???をPerlやRubyにできるな。
HTML::Templateのがよくないか?
PHPでテンプレート使うの馬鹿らしいんだけど、テンプレート
前提でコーディングしとくと、渡す直前で値をダンプしてみれば
エラーの原因とか何やってるのかがすぐわかるのよ。
0033nobodyさん
03/03/13 00:50ID:???0034nobodyさん
03/03/13 11:02ID:???0035nobodyさん
03/03/13 11:10ID:???いや、だからVにテンプレートを採用するかPHPの特性を素直に使うかの違いよ。
両者ともデータチェックはMの最後なりCの最後なりでチェックできる。
微妙に。
>35
まあ、そうだねぇ。
結局は好みの問題。
既存のテンプレートエンジンが気に入らなければ
自分で作ってもいいし、
自分にあうのがあればそれを使えばいいだけ。
自分はループのネスト考えるのがだるくて
既存のものを使ってますが(苦笑
WYSIWYGなエディタでも表示崩れないやつが好き。
あとHTML_Template_ITバージョンアップしてるな。
0037nobodyさん
03/03/13 13:31ID:???>WYSIWYGなエディタでも表示崩れないやつが好き。
ある?php始めてからもっぱらテキストエディタ派になっちゃいましたが。
川里氏/佐藤氏のPHP4テンプレートクラスライブラリ(改)は
割とそのあたり気を使って作られていたよ。
http://www.daiwakantei.co.jp/pc/tmpl2sa.html
Dreamweaverでは平気だった。
Smartyもうまく使えば大丈夫だと思う。
(というか、テンプレートファイルと画像を置く位置かな)
個人的には
http://sunset.freespace.jp/smarty/
ここにスクリーンショットでてるDreamweaverMXの
extensionに期待。
0039山崎渉
03/03/13 16:56ID:???0040nobodyさん
03/03/15 10:11ID:???コンパイルされたファイルとキャッシュによる表示速度の速度の向上じゃない?
0042nobodyさん
03/03/15 23:39ID:X1LKF8i00043nobodyさん
03/03/16 01:17ID:???つまりブロックで言うとトップとレフトはsmartyのテンプレなんだけど、
真中のコンテンツの部分をperlのCGI(掲示板)を利用したいわけです。
cgiを呼び出せば、内容は表示できそうですが、POSTとかGETした時
内容を渡せるのか?とか難しそうです。
そんなことしてる香具師いる?
0044nobodyさん
03/03/16 01:27ID:???0046nobodyさん
03/03/18 15:26ID:???0048nobodyさん
03/03/21 12:19ID:???ほかに標準のテンプレート機能ってあるのしょうか?
0050nobodyさん
03/03/21 19:50ID:02OewLFoSmarty使えない鯖ってどんな鯖?
0052nobodyさん
03/03/21 20:08ID:???「使えない」という状態がいったいどういう状態なのかを
言ってくれないと、アドバイスのしようもない。
0060nobodyさん
03/03/23 16:35ID:GUMN7n0B0061nobodyさん
03/03/24 00:18ID:???別の構文の言語ってかんじに見える。
おれは patTemplateの方が純粋にテンプレートっぽくって好き。
http://www.php-j.com/tutorial/php/template.php
出来ることが多いから自分も最初は
「何となくめんどくせー」
と思って使ってなかったんだけど、
実際に使ってみるとそうでもないよ。
必要ない機能は使わなければいいし。
header、footer、ループ部分を別にするテンプレートは
WYSIWYGなエディタ使えないので個人的にはあまり…
という感じ。
・Smarty
・PHP4 テンプレートクラスライブラリ改(tmpl2.class.php)
・HTML::Template_IT (PEAR)
自分が使ってみて使いやすかったのはこのあたり。
Smartyで注意することはSJISのテンプレートを使うときに
プリフィルタ/ポストフィルタを使って文字エンコードを変えないと
テンプレート内に「宮」とか書かれてるとエラーになってしまうあたり。
ttp://ns1.php.gr.jp/pipermail/php-users/2003-February/013595.html
このあたり参考に。
0063nobodyさん
03/03/24 16:20ID:???おまけに、smarty関連のディレクトリでいっぱいになって、
漏れのような小物野郎には大袈裟すぎと気付きました。
大規模システムには使い道があるんだと思うけど、
誰か、気軽に同封できるような、おすすめテンプレート情報もとむ。
0064nobodyさん
03/03/24 16:21ID:F52n5d8WSmartyの利用条件とかってあるの?
0065nobodyさん
03/03/24 16:37ID:???0066nobodyさん
03/03/24 17:39ID:???0067nobodyさん
03/03/24 17:52ID:bvsiZdotライセンスはGNU LGPLなんでそれさえ守っておけばいい。
0068あぼーん
NGNG0069nobodyさん
03/03/24 17:59ID:???0070あぼーん
NGNG0072nobodyさん
03/03/25 12:43ID:FOZw8qkaそうなの?
0073nobodyさん
03/03/25 14:04ID:CVcoKJbJマニュアル翻訳された方、ありがとう&お疲れ様。
PHP自体がある程度テンプレート的な使い方が出来るので、
確かに小規模なプロジェクトでは導入コストに較べてメリットは少ないですね。
プラグインとか使って見たいけど、私も使う機会なさそうだな。
ところで、[php] ... [/php] タグの存在に戸惑っています。
テンプレートとロジックを一緒に管理する事ができますッテ…(汗
テンプレートをコンポーネント化するより、
そのテンプレートを呼び出すメソッドを実装して、
その中に初期化など共通する処理を書いた方がいいと思うのだけど…
どうなんでしょう? php とか php_include タグの評判は。
アイデアは確かにいいんですけど、これって別にSmarty使う必要ないですよね?PHPでは。
ロジックの分離という点に置いては、テンプレートには不要だと思う。
PHPにループ用のタグを導入してくれればいいのになぁ…。
0074nobodyさん
03/03/25 14:30ID:???まぁ、形無し言語でそんなもん語っても仕方ないがしかし・・・。
0075nobodyさん
03/03/25 16:24ID:FOZw8qkaなんて浮かばないって。
PHP5の例外処理サポートが楽しみだ。
>73
とりあえず、[php]タグは忘れてるよ(笑
デザイナーにも教えてない。
余計なことされて事故って後から自分が修正・・・とか嫌だし。
というか、自分はデザインとの分離さえ出来ればいいから
変数への代入とループさえ出来れば困らないんだけどね・・・。
0078nobodyさん
03/03/26 05:55ID:Zn78/v4/一応、[php]タグは禁止する事もできるようになってる。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0RC1J_html/variable.security.html
うっかりセキュリティの脆弱を招かないためにも、
できれば$security = true、これ推奨。
Smartyはちょっと多機能になりすぎてる感があるね。
例えば最近、テンプレートからphpのオブジェクトのメソッドやらにアクセス出来る
機能が追加されたりしたけど、ロジックとデザインの分離が目的なのであれば、
本当は必要ないと思う。Smartyで何でもかんでもやろうとしすぎている。
せっかく他のテンプレートエンジンと比べて、キャッシュやカスタム関数による拡張性が
優れてるんだから、あんまり飛躍しすぎてヘンな事になってほしくないなぁ。
008273
03/03/27 07:18ID:illH7cXT> できれば$security = true、これ推奨。
THX これ探していました!!
これで安心してSmarty導入出来そうです(感謝)
>テンプレートからphpのオブジェクトのメソッドやらにアクセス出来る
>機能が追加されたりしたけど、
テンプレートに渡すオブジェクトにはgetメソッドしか実装しない/実行できない様にすれば少しは安全になるかも。
例えば、getDateメソッドに日付の表示フォーマットを引数に指定する等、
テンプレート側で指定できるとちょっと便利かな、と思ったりして。
でも、余計な事が出来てしまうリスクが痛いよなぁ。
ちなみに、テンプレートからオブジェクトのメソッドを呼ぶにはどう記述すればいいんでしょうか?
ドキュメントに、プロパティへのアクセス方法は見つけたのだけど…、
versionが古いのかな。見つけられませんでした<2.3.1です
昨日 2.5.0 RC2 リリースされたみたいなので updateしておこぅ〜っと。
>>79
それって、コンポーネント化と逆の発想?それとも、
例えば、「メールアドレスがある場合、名前にリンクを張る」という処理を
処理してからテンプレートに送るのか、テンプレート側で処理するか、って事ですか?
>>79-81
論点が解からない…。77, 78 は、自分には「Smarty本体には、デザインとロジックの分離の利点を損なう実装を許すような
余計な拡張機能は必要ない」という風に聞こえるのですが、何か勘違いしてる?フォローお願いします。
0083nobodyさん
03/03/29 15:15ID:CQcFf7wkSmartyで開発するときに注意したほうがいいこと(プログラマと
デザイナの取り決めなど)があったらお教え願えませんか?
(当方PHPは一週間の初心者ですが、今後社内のデザイナと
協力して社外向けWebプログラムを開発します)
008473
03/03/29 23:32ID:5Ovapm1S当方も、smartyは1週間の初心者です。
どちらかと言うと、教えてもらいたい側の人なのですが、
導入時に考えていた事を叩き台に書き出して見ます。
参考になればいいけど・・・。
まず、注意しないといけない事って、XSS問題とかですよね。
テンプレートに渡す値がエスケープされてるかどうか、
それとも、テンプレート側でエスケープするのか等。
セキュリティの問題の他にサイトのレイアウト崩壊とかも、
XSSで(重要度は違えど)起こり得るので、デザイナの方の理解を得て、
明確にしておいた方がいいとおもう。
セキュリティがデザイナさんの作るテンプレートに依存してしまう状況
というのは、ちょっと怖いので。
それと、情報の隠匿。社内のデザイナということなので、リスクは少ないと思いますが。
でも、不用意にオブジェクトをテンプレートに渡したりて、余計なところにアクセスされたりすると困るかも知れないので。
私も、>>76,>>78 に習って、
”デザイナーには教えない”,”設定で禁止する”と言う方針を見習おうかと思っています。
ところで、grep -E '{.+?}' *.tpl でテンプレート内の埋め込み文全部拾えるかな?
テンプレートの簡単なチェック・スクリプト作っておくと便利かも知れない。
実際の動作テストは、別に用意する必要あるだろうけど。
008573
03/03/29 23:34ID:5Ovapm1S>>73 コンポーネントで管理すること自体は便利な場合もあるけど、
テンプレート内にコードを含めるのは、自分にとってはリスク。
どうしても必要な場合は、[php]タグより include_php を使お〜っと。
上級ユーザではないので、コードが混ざったテンプレートを保守出来る自信ない;;
それに、テンプレート導入の利点がなくなるし。
> テンプレートからオブジェクトのメソッドを呼ぶ
Document 15. Advanced Features -> Objects 内に見つけましたm(_ _
テンプレートから利用できるプロパティ/メソッドを制限できるみたいなので、
セキュリティ面での心配は杞憂だったみたいです。
0086あぼーん
NGNG0087nobodyさん
03/03/30 06:50ID:7nc9kl8wご意見ありがとう。
デザイナーにphpタグを教えると、
「私にプログラム組めっていうのかさぁ」
とか言われそう(^^;
コード保守上も、Simple is Best だと思いますから、
phpタグは使わないようにしたいと思います。
(というか、ふつう最初からphpタグ使おうなんて考えないでしょうね)
「XSS」という言葉が理解できません。教えてください。
それから、Smartyはコンパイル処理があるようですが、
漢字コードが含まれていても大丈夫なのでしょうか?
(SJIS、EUCともOK?)
0088nobodyさん
03/03/30 10:11ID:ho1IX9Y50089nobodyさん
03/03/30 10:30ID:???クロス=Xなのね。
ひとつおりこうになれたYO
ありが�d
/■\
∧_∧ (;´Д` )
(・ω・)丿 ッパ
. ノ/ /
ノ ̄ゝ
いっしょにおにぎりたべませんか?
0091nobodyさん
03/03/31 13:53ID:D0ex7lz/CSSじゃCascading Style Sheetsと紛らわしいからね。
0092nobodyさん
03/03/31 18:47ID:???0093nobodyさん
03/03/31 18:48ID:???0094nobodyさん
03/04/02 04:49ID:???SJISの2バイト目に { や } が含まれることがある問題ですよね?
デリミタを、文字コードに依存しない他の文字に変更する。
文字コードに依存する部分は全て別のリソースにする。
等も、別の解決策として選択肢にいれておいてもいいのでわ。
0095nobodyさん
03/04/03 18:46ID:???http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=top
これわかりやすくていいよ。
DW上でも埋め込めるし。
0096nobodyさん
03/04/04 04:21ID:CWbmmlFZしています(ヘッダとフッタを入れている)。
すべての画面でデザインを統一しようとすると、どんな
小さな画面でもテンプレートにしてやらないと、ヘッダと
フッタが表示されません。
これでは非常に面倒なのですが、何かよい方法はない
でしょうか?
0097nobodyさん
03/04/04 11:37ID:???テンプレートをメインスクリプトあたりから直接弄ろうとしているからいちいち面倒なんだよ。
viewクラスを作って、「ヘッダとフッタはいつもの奴、メインボディはこれで」って感じで渡して
やればいいんじゃない。
#説明ベタ&Smartyは使ってないので外しているかもしれんが
0098nobodyさん
03/04/05 05:35ID:WWynoIxPあそっか。
Smartyクラスをextendsしたクラスをつくって
やればいいわけですね。
たいへん参考になりました。ありがとう!
0099nobodyさん
03/04/09 02:13ID:???/subdomain/index.tpl
とか別ディレクトリに同じ名前のテンプレートがある場合は、
どーすればよいの?
同じSmarty.class.php は使えないのかな?
0100nobodyさん
03/04/10 15:06ID:Gsybxm6498と同じ回答でいけるよ。
Smartyクラスをextendsした自分のクラスのコンストラクタ
で、各ディレクトリを指定してやればよいと思うが。
0101あぼーん
NGNG0102nobodyさん
03/04/12 10:21ID:1gFMXfRc0104山崎渉
03/04/17 12:05ID:???0105nobodyさん
03/04/20 21:11ID:PaIMcwUL同じ名前のテンプレートを違うディレクトリに置いて使っていたのだが、
まったく意図しない動きになりびびった。
0106nobodyさん
03/04/20 21:22ID:???結局どのように対処しましたか?
/public_html/www/index.php
/public_html/sub/index.php
/public_html/info/index.php
などサブドメインを作りたいんですけど、個別にインストールするのも
メンテ性が悪いですし…
0107105
03/04/20 22:15ID:???のようにラッパークラスを作ったり、
あとは、いちいち
$smarty = new Smarty;
$smarty->compile_dir = "/path/to/somewhere";
のようにディレクトリをしていしたりとか。。。
でも、めんどくさい。
ていうか、同じテンプレート名が使えないってのは仕様なんですか?
最初バグかと思ったんですが。
0108nobodyさん
03/04/23 01:25ID:???ここに書いてあった。
異なるディレクトリに置かれたテンプレートを使用する方法
http://sunset.freespace.jp/smarty/
0109nobodyさん
03/04/23 01:29ID:???読んでみたがいまいちよくわからんかった。
結局
>display() の引数 compile_id, cache_id を利用する事で可能となる。
この場合のやり方は、どうするの?
>1つのSmartyを複数のプロジェクトで使用する場合は、display( PROJECT_TPL_DIR . 'index.tpl'); とかになるのかな?
??
どういうことなのでしょうか?
0110nobodyさん
03/04/23 05:14ID:/AFbvcV5横からすみません。。。
アプリごとにラッパークラスを作って、その中で
$template_dirを指定すればいいと思いますが、
何か問題があるのですか?
0111あぼーん
NGNG0112nobodyさん
03/04/23 08:06ID:???0113nobodyさん
03/04/27 07:29ID:???俺の場合たいていこうしてる
display($template_file, $_SERVER[REQUEST_URI], $_SERVER[REQUEST_URI]);
0114nobodyさん
03/05/02 19:49ID:rrWLpWsVttp://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/
の「基本的なインストール」をみながら設定しました。
上記に沿ってテスト用のファイルを作成して表示してみましたが
下記のようなエラーが出てしまって困っています。
Warning: Smarty error: unable to read template resource: "smarty_test.tpl" in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042
Smarty.class.phpファイルの1042行目あたりは以下のとおりでした。
-------------------------------
function trigger_error($error_msg, $error_type = E_USER_WARNING)
{
trigger_error("Smarty error: $error_msg", $error_type);
}
-------------------------------
何が問題なのでしょうか。
環境:
RedHat 7.3 Apache 1.3.27
PHP 4.2.3 multibyte
PHPlib 7.4-pre1 Smarty 2.5.0 Source
0115114
03/05/02 19:53ID:rrWLpWsV設定は以下のようにしました。
Smarty本体は以下のように格納しました。
/usr/local/lib/php/Smarty/Smarty.class.php
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty/Config_File.class.php
/usr/local/lib/php/Smarty/debug.tpl
/usr/local/lib/php/Smarty/plugins/*.php
webサーバのドキュメントルートに以下のようにフォルダを作成し、chmod 770しました。
/usr/local/apache/htdocs/php/smarty/
/usr/local/apache/htdocs/php/templates/
/usr/local/apache/htdocs/php/templates_c/
/usr/local/apache/htdocs/php/cache/
/usr/local/apache/htdocs/php/configs/
php.iniの設定は下記のとおりです。
include_path = ".:/usr/local/apache/htdocs/phplib/php:/usr/local/lib/php/Smarty/"
ttp://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.basic.htmlExample
上記のサイトの「2-2. Smartyのインスタンスを作成する」のとおり
テストしてみましたがSmarty.class.php file could not be found という
エラーは出ませんでした。
0116114
03/05/02 19:54ID:rrWLpWsVテスト用に下記のようにファイルを設定しました。
templatesフォルダ内に「smarty_test.tpl」
----------------
{* Smarty *}
<html><body>
Hello, {$name}!
</body></html>
----------------
smartyフォルダ内に「smarty_test.php」
----------------
<?php
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = '/usr/local/apahce/htdocs/php/templates/';
$smarty->compile_dir = '/usr/local/apahce/htdocs/php/templates_c/';
$smarty->config_dir = '/usr/local/apahce/htdocs/php/configs/';
$smarty->cache_dir = '/usr/local/apahce/htdocs/php/cache/';
$smarty->assign('name','Ned');
$smarty->display('smarty_test.tpl');
?>
----------------
もー何が何やら( ´д`;)
ナガクテスマソ...
0117nobodyさん
03/05/03 13:57ID:???多分PATHが間違ってるだけか、パーミッションの問題のような気がするけど。
ファイルのオーナーはどうなってる?
あと、セーフモードはon?off?
0118114
03/05/03 17:06ID:ucISI8Endebug on ってphp.iniの設定でつか?
セーフモードはoffです。
パーミッションとファイルのオーナーは普通に
アップロードダウンロードできるんで問題なさそうな気がしますが
そういう問題じゃないでしょうか?
エラーの内容がSmarty.class.phpが違ってるって事だったんですが
やっぱりパスのせいなんでしょうか?
パス違ってたら最初から読み込めないんじゃないかと思ったんですがいかがでしょう?
0119あぼーん
NGNG0120nobodyさん
03/05/04 12:42ID:???debug onはSmartyの。今はあんま関係ないかも。
パーミッションは、UL,DL関係ない。
apacheがtemplates_c とか cache に書き込めるかが重要。 だけど、これも違うエラーがでるから関係ないかな。
Warning: Smarty error: unable to read template resource: "smarty_test.tpl" in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042
をそのまま訳すとテンプレートのリソースが読めん!!ってことだから、
templates/smarty_test.tpl が読めないんでしょ?
だから、smarty_test.tpl のパーミッションか、
その上位ディレクトリのバーミッションじゃない?
0121114
03/05/04 21:05ID:PMPOUjrA> templates/smarty_test.tpl が読めないんでしょ?
なるほど!Smarty.class.phpが違ってるって事じゃないんですな。
> だから、smarty_test.tpl のパーミッションか、
> その上位ディレクトリのバーミッションじゃない?
templates/ あたりは全部115に書いたとおり770にしました。
青マンモス本には700に書いてあったんで、そっちも試したけど同じでした。
問題はsmarty_test.tplファイルのパーミッション。
このファイルは、WindowsXPで作成して、FFFTPで該当ディレクトリにアップしました。
その後は、そのままで全くいじってないんだけど、このままだと
もしかして書き込みができないから駄目とか??
.tplファイルはアップロードしたら権限を修正するべき物でしょうか?
0122あぼーん
NGNG0123nobodyさん
03/05/05 01:21ID:???パーミッションを全部書いてみ。
templates_c は777でないと動かない時があるって、QUICKINSTALLかなにかに
書いてあったの読んだ?
templates_c,cache のファイルオーナーが、Webサーバと同じにならないなら、
777でないとダメじゃなかったっけ?
わからんのなら、全部777にしてみろ。
0124114
03/05/06 10:47ID:aSOV5r0Ltemplates_c は777でないと動かない時があるって言うのは知りませんでした。
とりあえず、全部777にしてみました。実行結果は同じエラーでした。
パーミッションとディレクトリ構成はこんな感じです。
/usr/local/apache/htdocs
--Webファイルをおくディレクトリでユーザとオーナーはwwwです。
この中にphpというディレクトリがありパーミッションは以下のとおりです。
/usr/local/apache/htdocs/php
drwxrwxrwx 7 www www 4096 5月 2 19:35 php
このphpフォルダ内に、smarty用のディレクトリを入れ777にしました。
drwxrwxrwx 2 www www 4096 5月 2 17:53 cache
drwxrwxrwx 2 www www 4096 5月 2 19:19 configs
drwxrwxrwx 2 www www 4096 5月 2 18:16 smarty
drwxrwxrwx 2 www www 4096 5月 2 19:18 templates
drwxrwxrwx 2 www www 4096 5月 2 17:53 templates_c
テンプレートディレクトリ内に下記ファイルがあります。
-rwxrwxrwx 1 www-data www-data 56 5月 2 19:24 smarty_test.tpl
もしかして、これらのディレクトリはWEBファイルを置くディレクトリ
直下に置かないとダメなんでしょうか?それとも、WEBファイルを置くディレクトリの
外に置くべきものだったりしますか?ここ読んでるんですが↓
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.basic.html
青マンモス本と書いてある事が微妙に違っていて、よくわからなくなってしまいました。。。
とりあえず、全部削除してもう一度始めから設定しなおしてみます。
0125あぼーん
NGNG0126あぼーん
NGNG0127114
03/05/06 16:37ID:aSOV5r0Lありがとうございました。
アプリケーション用のSmartyのディレクトリをドキュメントルートの外に作成。
templates/ templates_c/ configs/ cache/
cache/ templates_c/にwebサーバのオーナとユーザに設定し、
cache も templates_c も777で設定。
これで、下記の拡張セットアップまでできました。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/index.html
0128114
03/05/06 16:39ID:aSOV5r0L外なので tplファイルがWindows側からアップロードできません。
マニュアルによれば、「セキュリティの心配を避けるためにドキュメントルート外に
これらのディレクトリを配置する事が推奨されます。」とあるので
ドキュメントルートの中においてもセキュリティ面を除けば問題ないんじゃないか
と考えて、再度ドキュメントルート内に設定してみました。
ドキュメントルート内のSmarty用のディレクトリと、ファイル全てを
パーミッションを777、webサーバのオーナとユーザに設定しましたが
やはり >>114 のようなエラーが出てしまいます。
Warning: Smarty error: problem writing temporary file '/usr/local/apache/htdocs/smarty/php/cache//%%306/%%30660664/3eb76264e8132' in /usr/local/lib/php/Smarty/Smarty.class.php on line 1042
Hello, Ned!
ドキュメントルート内に置くのは不可なのでしょうか?
他の方はtplファイルのアップロードはどうなさっているのでしょうか?
Webサーバで直接書いてらっしゃるのでしょうか?
何度もスミマセン。
0129nobodyさん
03/05/06 18:19ID:6G0ArJzRドキュメントルートより1つ上の階層にファイルを
アップロードできないってのがなんか違うな。
0130nobodyさん
03/05/06 19:48ID:???なんでアップできないかがよくわからんな。
そんなことありえないと思うが、どのようにできないわけ?
で、そのエラーはやっぱりパーミッションの問題だ。
templates_c 以下にできるファイルのオーナーが違うでしょ?
0131114
03/05/07 11:05ID:ejEp7kPZ> で、そのエラーはやっぱりパーミッションの問題だ。
> templates_c 以下にできるファイルのオーナーが違うでしょ?
おっしゃるとおり、オーナー違ったし書き込み権限もなかった(´・ω・`)
ここの拡張セットアップ↓を使わなければうまくいくようになりました!
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/installing.smarty.extended.html
ドキュメントルートより1つ上の階層にファイルをアップロードできないって変ですか?
/usr/local/apache/htdocsここの一つ上だから
/usr/local/apacheここがFTPした時に見えないってことですけど。
FTPの設定を変えたら見えるようになると思いますが、それって危険ではないかな?
そういうことじゃないでしょうか??あれれ?
というか、そのあたりのファイルはユーザ別に作って
そのユーザのディレクトリに入れた方がいいのでは・・・。
ドキュメントルート
/home/username/www
Smartyのコンパイルディレクトリ
/home/username/lib/templates_c
自分ならこんな感じ。
0133114
03/05/07 15:32ID:ejEp7kPZなるほど。ユーザディレクトリ使えばできますね。
それでやってみます!
みなさん、長いことお付き合いいただきありがとうございました!
おかげさまで無事設定できそうで、大感謝です!
0134あぼーん
NGNG0136114
03/05/08 13:03ID:???オオー!素敵なコメントありがとう!
もちろん、絶対恩返しします!
0138135
03/05/16 10:49ID:???そのコメントは僕の考えたコメントじゃないんですけどね…
僕も今まで色々質問ばかりしてきて、たくさんの親切な人にいっぱい教えて
もらいました。その時言われたのが>>135のような言葉です。
多分UNIX系の方々の考え方だと思いますが、僕もその考えに賛同して、
その恩を他の困っている人に返しています。
UNIX板など行くと商業サポートかと思うくらい、質問に答えてばかりの人が
いますが、多分その方も誰かから色々教わったたり、フリーソフトウェア、
オープンソフトウェアの恩を返しているんだろうなぁと思います。
#smartyというこんなに労力のかかっているソフトを無料で配布している
作者さんに対しても恩を返していることになるのかなぁ…
0139nobodyさん
03/05/21 19:08ID:p8eRICbYひとつの変数を使いまわして、新たな値を入れたい時は、
毎回clear_assign()使った方がいいんでしょうか?
使わなくても動いてるみたいだけど。。。
0140あぼーん
NGNG0141139
03/05/21 19:13ID:p8eRICbYSmartyって、if とか loop が使えるじゃないですか。
これってとても便利なんですが、デザイナーさんもこういうのをある程度は
理解しないといけないですよね。
そうするとデザインとロジックの分離からちょっとずれてしまう気がするんですが
実際デザイナさんと作成されている方はこの辺どうされてるんでしょうか?
if文は使ってないなぁ。
loopは使えないとお互い不幸になりそうなので使ってます。
・とりあえずloopとか変数とか無しでデザイン作ってもらう
・その後、自分がloop箇所や変数箇所を追記・修正
・デザインや文章に変更が生じた場合、命令部を破壊しないように変えてもらう
自分はこんな感じでやってるよ。
0143山崎渉
03/05/22 01:57ID:???0144139
03/05/22 10:34ID:???ありがとうございます。
デザインが先で、あとは {...} が付いている所はさわらないで
もらうって感じですね。
if 文使ってないというのは、例えば、状況によって画面の表示を変えたい時
どのようにされてるんでしょうか?権限によって画面を変えたいときとか。
>権限によって画面を変えたいときとか。
ファイルそのものをわけちゃう。
Dreamweaver等でデザインファイル(html)をみるときもその方が
見やすいと思うのだけどどうだろう。
このあたりは人によって開発手法違うだろうから
他の人の意見も聞きたいなぁ。
0146nobodyさん
03/05/22 19:56ID:???みなさんはどのように作っていらっしゃいますか?
自分も今作っているのですが、設定ファイルがあちこち行ってしまって複雑になってしまい
ました。
title,descriptionなどを入れた、configs/sub.conf
サブごとのラッパークラス includes/sub.lib.php
そして、各phpファイル www/sub/index.php
みなさんはどのようにやっているんですかねぇ?
0147あぼーん
NGNG0148あぼーん
NGNG0149あぼーん
NGNG0150山崎渉
03/05/28 17:07ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0151nobodyさん
03/05/31 13:59ID:???スクリプトファイルとテンプレートファイルを同じディレクトリに置いて管理してます。結局これが自然な気がします。ヘッダやフッタのような共通ファイルは別場所でまとめて管理。
PEAR を継承してテンプレート制御用のクラスを作りその中で Smarty を初期化してます。
この中で例えば $obj->smarty->display() のような関数に対して $obj->display() のようなラッパーを作り、そこで template_dir や compile_id の制御を行います。
でそのクラスをさらに extends して特定ブロックごとに合わせています。
実行はこんな感じ。
$tpl = new TemplateAreaName;
/* .. snip.. ここで処理&変数のアサインを行う */
// レンダリング
$tpl->showHeader();
$tpl->showMenu();
$tpl->display('index.tpl');
$tpl->showFooter();
0152nobodyさん
03/05/31 19:10ID:???>スクリプトファイルとテンプレートファイルを同じディレクトリに置いて管理してます。
なるほど。確かに更新するとき、両方のディレクトリを行き来したりする必要はなくなりますね。
これだと、テンプレートファイルも外から見えますよね?
問題ないんですかね。
0153nobodyさん
03/05/31 20:19ID:???う〜ん、、どうなんでしょう。今回 Smarty を初採用し、アプリケーションの完成度も 40% というところなので正直手探りでやっています。
もっと良い方法があればいいのですが。
ご指摘の危険性は考えましたが元々テンプレートをさくさく差し替えれるようにテンプレートには極力情報を埋め込まないようにしており、
テンプレートへの直接のアクセスも拡張子によるアクセス制限で回避出来ると思ってこの方法でやっています。
0154nobodyさん
03/06/01 12:57ID:???もう一つ思い出しました。
テンプレートの先頭にスクリプトを埋め込むか、テンプレートをPHPとして認識させて define などを使ってダイレクトアクセスを防ぐ手段も考えられます。
PHPBB のライブラリとかこういうやり方だったような。
0155nobodyさん
03/06/07 06:42ID:dfQas5D8これは私だけ?
確か、Smartyクラスモジュールの2691行目だったと思います。
$smarty->use_sub_dirs = false;
で回避できない?
意味はマニュアル参照。
0157nobodyさん
03/06/10 07:06ID:Fwh1UjxU$smarty->use_sub_dirs = false;
やってますが、それでもwarning出てしまします。
ほかに思い当たる情報があればお願いします。
0158あぼーん
NGNG0159あぼーん
NGNG0160あぼーん
NGNGというかそのwarningの内容出してくれないと何とも。
cacheディレクトリとtemplates_cディレクトリに
書き込み権限与えてる?
0162nobodyさん
03/06/12 18:20ID:???googleで調べて、magpieというのがあったので、それを使おうとしています。
が、日本語が文字化けしてしまうので、変換させたいのですが、どこでどう変換させれば
いいのかがわかりませんでした。
以下が、smarty用サンプルコードをいじったものです。
$url = $_GET['rss_url'];
if ( $url ) {
// assign a variable to smarty for use in the template
$smarty->assign('rss_url', $url);
$rss = fetch_rss( $url );
// if fetch_rss returned false, we encountered an error
if ( !$rss ) {
$smarty->assign( 'error', magpie_error() );
}
//ここは文字化け対策成功
$rss->channel['title'] = mb_convert_encoding($rss->channel['title'], "EUC", "auto");
foreach ($rss->items as $item) {
//ここでどのような変数に代入すれば良いのでしょうか?
$title = mb_convert_encoding($item['title'], "EUC", "auto");
}
$smarty->assign('rss', $rss );
$item = $rss->items[0];
$date = parse_w3cdtf( $item['dc']['date'] );
$smarty->assign( 'date', $date );
}
0163nobodyさん
03/06/13 04:36ID:???foreach ($rss->items as $key=>$item) {
$rss->items["$key"]['title'] = mb_convert_encoding($item['title'], "EUC", "auto");
}
でOK。
0164nobodyさん
03/06/20 01:36ID:22HNzffu0166nobodyさん
03/06/22 01:38ID:9+GBIMXBどーやんの?
0167nobodyさん
03/06/22 08:43ID:???http://www.spencernetwork.org/
0168nobodyさん
03/06/28 01:23ID:M0QDMJtSわかんねー
0169あぼーん
NGNG0170あぼーん
NGNG0171あぼーん
NGNG0172あぼーん
NGNG0173あぼーん
NGNG0174あぼーん
NGNG0175あぼーん
NGNG0176nobodyさん
03/07/12 19:16ID:P6mY9BCG0177nobodyさん
03/07/13 01:15ID:iGC1lgy5使われているサイト知ってる?
0179nobodyさん
03/07/13 14:05ID:Qv0LVgul例えば、エラーチェックを行って、エラーに引っかかると
別ウィンドウでエラー内容を表示する、等
require もしくは header 関数を利用して。
もしくはそれ以外の関数、コーディングで。
Ncurses関数は客の鯖問題でPHPをリコンパイルできません。。
0180あぼーん
NGNG0181nobodyさん
03/07/13 14:14ID:48FuQ70+今手元にないから分からないけど、
"Professional PHP プログラミング"に、それらしい例がのっていたような。
0182nobodyさん
03/07/13 14:17ID:Qv0LVgul早速ありがとうです。
調べてみます
0183nobodyさん
03/07/13 15:19ID:???smartyと関係ない上にマルチポスト
0184nobodyさん
03/07/13 16:23ID:???できるの?コレ?
0185山崎 渉
03/07/15 11:07ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0186nobodyさん
03/07/15 17:55ID:wTgTaT8Bコンテンツとデザイン〜の1です。
>>177
一応は本家公認のテンプレートエンジンって扱い(ですよね?)なので、海の向こうでの
使用頻度は高いんじゃないかと思います。xoopsに採用という実績もありますし。
国内でも自分みたいな糞田舎の情報システム部ですら2年前から使ってるので、それなりに
普及していると思いますよ。googleでも随分引っかかるようになってきましたね。
0187nobodyさん
03/07/16 00:47ID:???APCとかZendOptimizerとか使える?
0188nobodyさん
03/07/21 14:35ID:???全く assign していない PEAR::raiseError のようなエラー処理の記述や print 文で勝手にエラー吐いてくれまつ。
…… Smarty のコードまで潜って 1h ほど戦って気付いた。
$tpl->display('hoge.php');
拡張子が .tpl ぢゃなくて .php で別ファイル指定してた。鬱だ氏のう _| ̄|◯
別に問題ないかと。
APC1の頃は大丈夫だったし
現在はmmcache使ってるけど大丈夫だよ〜。
0190nobodyさん
03/07/22 15:11ID:???appendとassignって何が違うんでしょう?
0192nobodyさん
03/07/28 23:09ID:Qst4s2Alページの一部分だけキャッシュのすることってできないですか?
自分、いわゆる「ぱんくず(※)」をキャッシュにしたいんですよね・・・
※トップページから現在のぺージまでの道筋を表したもの。
例)Yahoo!とかだと
ホーム > コンピュータとインターネット > ソフトウェア > インターネット > WWW > ブラウザ
っていうあれね。
0193nobodyさん
03/07/28 23:36ID:zAmscCpEhttp://www3.free-city.net/home/espresso/white-snow.html
0194nobodyさん
03/07/29 17:31ID:aKRM8GxJinsertを使えば出来る。
http://sunset.freespace.jp/smarty/SmartyManual_2-5-0J_html/language.function.insert.html
カスタムプラグインでテンプレート内に{breadcrumb 現在の位置="hoge"}ってかくと
自動でずらっとパンくず表示してくれるの作ったけど便利だよ。
他のサイトにも再利用できるし。
0195nobodyさん
03/08/01 14:03ID:???使わせたいんですが、Smartyタグのデリミタは何が無難でしょうか。
ページ内にCSSを書くこともあるのでデフォルトの { } は使わせたく
ないし、XOOPS2 なんかで定義されている <{ ]> でもいいかなと
思ったけど、< なんかに自動的に置換されてしまわないかと心配
です。それに、modifierのパラメータを " で囲むと " に置換
されるもよう。
0196山崎 渉
03/08/02 02:23ID:???( ^^ )< ぬるぽ(^^)
0197ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:51ID:???ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0198nobodyさん
03/08/09 06:43ID:ZOEKZBoK0199あぼーん
NGNG0200nobodyさん
03/08/09 07:56ID:0dlTg+8lhttp://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=doc&txt=htmltemplate
を氏蘭のか?
0201あぼーん
NGNG0202nobodyさん
03/08/09 15:33ID:ZOEKZBoKせめてキャッシュを実装してほしい。(中間ファイルでないよ)
タグが拡張できるようにしてほしい。
ちゃんとエラーハンドリングしてほしい。
このあたりを実装してくれれは少しは考えるが、
まだ今のところはSmartyのほうが使い勝手はいいな。
0203あぼーん
NGNG0205nobodyさん
03/08/12 13:45ID:7lLuw4V/いや、中身は見てないが。
0207nobodyさん
03/08/13 11:24ID:+vOr/IO1普通、Release Candidate版って問題がなければそのままリリース版に
するものだから、仕様変更はその前の時点で落ち着いていて欲しいな。
その辺、PHPらしいと言えばらしいけど。
0208nobodyさん
03/08/13 21:01ID:???旧ver Release -> 新ver RC は仕様が変わっててあたりまえじゃないか?
0209nobodyさん
03/08/14 12:09ID:Ayxn98z4それもそうだ。
新ver RCと旧ver Releaseの間に新ver betaに相当するもの(CVS head)が
あったと考えれば問題ないな。スマソ。
0210山崎 渉
03/08/15 22:32ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0211nobodyさん
03/08/16 17:32ID:???それを配列にいれます。
その配列を1こずつ、ループさせて、テンプレートで
書き出すにはどうしたらいいんでしょうか。
勘で、
index.php
for($i=0; $buf=gets($fp, 8000); $i++)
{
$msg[$i]=$buf;
$smarty->assign('msg',array("$i"=>$buf));
}
出力側
{section name=msg_id loop=$msg}
msg: {$msg[msg_id]}<br>
{/section}
とかやってみたんですが、うまくいかないです。
誰か教えてください。
0212nobodyさん
03/08/16 17:45ID:???$fpの中には、ログファイルが入ってます。
0213nobodyさん
03/08/16 18:04ID:???(^○^)
0214nobodyさん
03/08/23 08:07ID:qE2mijHa0215nobodyさん
03/08/31 23:16ID:OAFHlkE10216nobodyさん
03/09/03 11:17ID:???0217nobodyさん
03/09/11 19:36ID:???0218nobodyさん
03/09/12 09:35ID:???0219nobodyさん
03/09/18 10:27ID:bzSYta4I0220nobodyさん
03/10/02 10:36ID:ZE4wxlxfSmartyを使ったプログラムを業者に頼んだら、あがってきたソースは
タグまでphp側で書いてきました。最初print文を使ってるのかと思いました。
$str ="<form name=f action=aaa.php method=post>\n";
$str .="<TABLE cellSpacing=0 cellPadding=5 width=620 border=0 >\n";
$str .="<TR $ABC>\n";
・・・
$str .="</TR>\n";
$str .="</TABLE>\n";
$str .="</form>\n";
こんな調子で300行くらい。で、最後にデータをassignしてました。
$tpl->assign("str",$str);
で、これではSmartyの意味がないので、タグ(デザイン)とプログラムを分離してください。
と伝えた所「タグとプログラムの完全な分離はできません」と言われました。
私はできるんじゃないかと思っていたのですが、Smartyでは「タグとプログラムの完全な分離」
は不可能なのでしょうか?
0221nobodyさん
03/10/02 12:19ID:???端折ったコードで申し訳ないが
<table>
<tr>
<th>header1</th>
<th>header2</th>
</tr>
{loop}
<tr>
<td>{$data1}</td>
<td>{$data2}</td>
</tr>
{/loop}
</table>
Smartyはこんな風に使うんだよ、と教えてあげて。
0222nobodyさん
03/10/02 12:20ID:???端折ったコードで申し訳ないが
<table>
<tr>
<th>header1</th>
<th>header2</th>
</tr>
{loop}
<tr>
<td>{$data1}</td>
<td>{$data2}</td>
</tr>
{/loop}
</table>
Smartyはこんな風に使うんだよ、と教えてあげて。
0223220
03/10/02 13:42ID:???ご返事ありがとうございます。やはりおかしいですよね。
私はPHPは初心者なのですが、納入されたSmartyをみて
びっくりしました。参考にしようと思ったのに・・・。
今修正してもらってます。
ついでにいうと、納入された物を見ていたら、仕様書に
書いてある事でやっていないことがあったので、それを指摘したら
「じゃあ、仕様書をなおしておきます」と平気で言い放ちました。
(゚Д゚)ハァ? …タマゲマスタ!
全然関係ない話スマソ。
0224nobodyさん
03/10/02 22:25ID:???0225nobodyさん
03/10/02 23:06ID:???HTML分離させて渡したら、良く分からないので
このHTMLをSmarty用に書き換えてとか渡された。
わかんね−なら最初っからSmartyでとか言うんじゃ寝ェよ
0226nobodyさん
03/10/08 14:23ID:h0+MMd8V上のサイトを参考にPHPでMVCってみたけど・・・しんどい・・
ログ読ませてもらったらよさそうなので今度のシステムで使わせてもらいます。
0227nobodyさん
03/10/09 17:38ID:???$a[0]->c[0] = 2;
$a[0]->c[1] = 3;
$a[1]->b = 4;
$a[1]->c[0] = 5;
$a[1]->c[1] = 6;
$tpl->assign("a", $a);
こんな感じで
{section name=loop1 loop=$a}
{section name=loop2 loop=$a[loop1]->c}
{$a[loop1]->c[loop2]} {* ← ここでエラー *}
{/section}
{/section}
とすると
unidentified token '[loop2]'
と怒られます(涙)
なにかいい方法ないでしょうか?
$a[x][a]
なら行けるんですけど、assignが面倒で。。。
0228227
03/10/09 18:42ID:???失礼しました!
{section name=loop1 loop=$a}
{foreach key=key item=item from=$a[loop1]->c}
{$key} = {$item}
{/foreach}
{/section}
0229nobodyさん
03/10/10 00:49ID:???0230nobodyさん
03/10/10 00:58ID:oTftSrdr自分の、ファイルを置ける領域に「Smarty」という名のディレクトリをつくり、、ファイル群をそこにアップロードして、、
define("SMARTY_DIR","/Smartyへのパス・・・・・・/Smarty/");
require_once(SMARTY_DIR."Smarty.class.php");
とやれば、使えるのでしょうか?
0232230
03/10/11 00:46ID:U0DA9P6C自分が借りてるレンタルサーバで、PHPが近々はいる予定なので、
関心があって訊いてみました
0233nobodyさん
03/10/11 08:24ID:???0235nobodyさん
03/10/14 23:32ID:???PHPを実行するユーザーが、templates_cとcacheディレクトリを
読み書きできるように、場合によってはパーミッションを変更しないと
いけないのだが、そのへんは大丈夫?
0239nobodyさん
03/10/18 23:59ID:???たとえば、
<ul>
{foreach item=c from=$node}
<li>
{$c->name}
<ul>
{foreach item=cc from=$c}
<li>
{$cc->name}
<ul>
{foreach item=ccc from=$cc}
<li>
{$ccc->name}
{* ... *}
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
みたいな感じでありったけ出力したいのですが。
0240239
03/10/19 00:00ID:???あ、スマソ
<ul>
{foreach item=c from=$node->children}
<li>
{$c->name}
<ul>
{foreach item=cc from=$c->children}
<li>
{$cc->name}
<ul>
{foreach item=ccc from=$cc->children}
<li>
{$ccc->name}
{* ... *}
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
0242239
03/10/20 10:08ID:???ループで書くとこうなってしまうってことです。
こういうのを再帰で書くのはSmartyでは難しいんでしょうか。
それでちょっと思いついたんですが、自分自身をincludeする
テンプレート片を作るとどうなんでしょう。自分でちょっとやって
みたら、変数のスコープの問題でつまづいてしまったんですが…。
0243239
03/10/20 13:16ID:???やればうまくいきました。
0244nobodyさん
03/10/21 14:41ID:???みたいに配列を直接指定する方法ってありますか?
0245244
03/10/21 15:24ID:???できないのは $a[0]->b[0] でした。
できないのかなー?
0246nobodyさん
03/10/22 17:20ID:6TbJL0Yrエラーがでてた。
これSmarty?
http://www.itv24.com/
0248nobodyさん
03/11/07 15:10ID:KX2gQLRX0249nobodyさん
03/11/07 19:42ID:ZxETm7Q5---
$template_dir
テンプレートファイルを置くディレクトリです。ファイルをインクルードする際にリソースの種類を指定しなかった場合は、
このディレクトリから探します。デフォルトは"./templates"で、実行中のphpスクリプトが置かれた場所に存在する
"templates"ディレクトリを探す事を意味します。
テクニカルノート: このディレクトリをwebサーバのドキュメントルート下に置く事を推奨しません。
---
この最後の行、なんでなんでしょう?
直接のぞかれて問題のあるようなテンプレート(tpl)ファイルを置く方が、問題だと思うのですが・・・
実際、XOOPSなんかも、ドキュメントルート下にtplファイル置いてますし。。。
0250nobodyさん
03/11/07 21:10ID:???何が言いたいんだ?
> 直接のぞかれて問題のあるようなテンプレート(tpl)ファイルを置く方が、問題だと思うのですが・・・
問題なんじゃん、じゃあこれであってるじゃん
0251nobodyさん
03/11/07 22:32ID:???処理方法がばれればクラッカーに解析される可能性など。
見られないにこしたことはない。
0252nobodyさん
03/11/07 23:57ID:???XOOPSの場合、レンタルサーバ等でhtml公開用のディレクトリ
以外がユーザに解放されていないケースにも合わせるため
XOOPSインストールディレクトリ以下に集中させる設計になっているから
必ずしもセキュリティ上ベストな選択がなされている訳ではないよ。
#敢えてレベルの低いところをターゲットとしている。全体的に
0253nobodyさん
03/11/12 04:47ID:FrBzA+QuSmartyを導入しようとしているのですが、
Warning: main(/usr/local/apache/smarty/Smarty.class.php):
failed to open stream: Permission denied in /usr/local/apache/htdocs/index.php on line 23
となってしまいます。
でも、httpd.confは、
User www
Group www
としていて(いつお、apacheをリスタートさせた)
で、
chwon www:www smarty
chmod 770 smarty
chwon www:www smarty/*
chmod 770 smarty/*
としたのですが、
やはり、前述のエラーが出てしまいます。
ただ、1回、正常に動作したことはあったんですよね。。。
そのあと、smartyのディレクトリを場所変えたり、
些細なことしか(なにをしたかは失念してしまいましたが)してないはずなのに、こうなってしまってます。
いったい、どこらへんを疑えばいいのでしょうか?
ポインタだけでも示して頂ければ幸いです。
0254nobodyさん
03/11/12 07:29ID:FrBzA+QuExample 2-2. Smartyのインスタンスを作成する
require('Smarty.class.php');
$smarty = new Smarty;
Example 2-3. ライブラリファイルの絶対パスを指定する
require('/usr/local/lib/php/Smarty/Smarty.class.php');
$smarty = new Smarty;
Example 2-4. phpのinclude_pathにライブラリディレクトリを追加する
// php.iniを編集し、include_pathにSmartyのライブラリディレクトリを追加して
// webサーバをリスタートしたなら、以下を行ってください。
require('Smarty.class.php');
$smarty = new Smarty;
Example 2-5. 手動でSMARTY_DIR定数を定義する
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;
↓から引用しますた。
http://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/installing.smarty.basic.html
0255nobodyさん
03/11/13 09:38ID:???その些細なことが原因なんだと思うが。。。
わからなかったらもう1度最初からやったほうがいいと思う
chwon を chownにしたらよいかも
0256nobodyさん
03/11/13 21:49ID:???http://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/installing.smarty.extended.html
0257nobodyさん
03/11/14 13:26ID:maWzYQwN俺も最近使い始めたんだけど、JavaScriptやCSSのタグに引っかかって
鬱陶しい。結局何に変更しました?
0258nobodyさん
03/11/17 14:01ID:EFGY3Z8yカスタム関数の追加ってどうやるんですかね?
動的な関数の追加はregister_function()を使用すればよいのですが、
もっと汎用的に使いたいんです。
マンモス本によりますと、Smarty.addons.phpというファイルに定義を
追加すればよいことになっているんですが、これはこの本の出版時点
のversion 1.5での設定法らしんです。
version2か2.5あたりから、そのあたりの使用が変わったらしい(changelog
を参照)
のですが、新しい設定法がわからなくて悩んでいます。
どなたかご教授願えませんか?
0259nobodyさん
03/11/17 15:54ID:???オレも最初はマンモス本でやった
いろいろ変わってるよね。
ほい。
ttp://sunset.freespace.jp/smarty/SmartyManual_2-4-1J_html/index.html
たぶんpluginsディレクトリ内の
function.xxxxx.php
を適当にコピーして内容もそれを参考にいじれば
いけたような。。。
0260nobodyさん
03/11/17 15:56ID:???そこまで分かっていて、日本語に訳されたマニュアルもあるのに
どうして読まないのでしょうか?
ttp://sunset.freespace.jp/smarty/SmartyManual_2-6-0RC2J_html/
0261nobodyさん
03/11/17 18:48ID:6jAm6LT2有難う御座います。
マニュアルは一応一読したつもりですが、グローバルなカスタム関数の
登録に関して記述が見当たらなかったもので・・・。
それでやってみますです!
0262nobodyさん
03/11/18 15:58ID:???0263nobodyさん
03/11/18 17:06ID:???0264@@@@@
03/11/19 00:18ID:Zaav6IG2>‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜
>
> ねえ、ちょっと・・・マジやばいんじゃない? この動画!!
> ↓↓ ↓↓
> http://moro00.e-city.tv/ http://moro00.e-city.tv/
>
> ハッキリ言って、丸見え! 素人はお金のためなら何でもヤル。
> 撮られた時はこんなにバラ撒かれるとは思わなかったんだろね。
> けっこうカワイイ娘なのになぁ・・・ そのへん歩いてたりして!
>
>‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜‥∞‥゜★。‥∞‥。☆゜
>
0265nobodyさん
03/11/25 22:06ID:???0266nobodyさん
03/12/05 20:56ID:n07yC7qyhttp://pc2.2ch.net/test/read.cgi/php/1067635640/984
<p id="name">ここに名前</p>
が、
$tpl->assign("name", "太郎");
で
<p>太郎</p>
となるようにするにはどうすればいいのでしょうか。
今自分ことの環境はデフォルトなので、デリミタは { } となっています。
0267nobodyさん
03/12/05 21:48ID:???Smartyはセットアップできたの?
あなたの質問の内容よりよっぽど難しいと思うけど。
で、セットアップ出来ているとしたら、セットアップする際に参照した
マニュアル(例えば>>1には日本語マニュアルが紹介されている)の
最初の方にあなたの求める答えが載っているのだが。
0268266
03/12/05 22:20ID:???を見てインストールし、
require('guestbook/setup.php');
$smarty = new Smarty_GuestBook;
$smarty->assign('name','Ned');
$smarty->display('index.tpl');
まではうまく動くことを確認しました。
いまマニュアルを読み返しているのですが、それらしき箇所を発見することができません。
デリミタのカスタマイズは$left_delimiterと$right_delimiterの値を変えるんだと
思うのですが、これをどういじっても
<p id="name">ここに名前</p> ⇒ <p>太郎</p>
とはならないような気がします。
0269nobodyさん
03/12/05 22:46ID:???もう少しマニュアルを読めば分かると思うけど、index.tplに
<p id="name">{$name}</p>
と書けば置き換わるよ。
0270266
03/12/05 22:57ID:???<element id="varname">ダミーの文字</element>
というテンプレートに対して、 assign('varname', 実際の文字) とすると
varnameというidの振られたエレメントの中のダミーの文字が置き換わって
<element>実際の文字</element>
となるようなライブラリを探しているんです。
これだと、「仕上がり見本」のHTMLをそのままテンプレートに使えるんです。
0271nobodyさん
03/12/05 23:05ID:???ああ、そういうことね。
では、テンプレートにifとelseを使って、$hogeがあるときは$hogeの内容、
$hogeが無いときはデフォルトの文字列っていう風にしてはいかが?
0272266
03/12/06 13:28ID:???っていうことですか? これ Smartyを通さないと <p>加藤剛</p> を得られませんよね。
デザイナーは普通のHTMLエディタで何の変哲もないHTMLを書けばいい、
というのが狙いなので。
0273nobodyさん
03/12/06 13:46ID:???ああ、そこまでは無理やね。
というか、そんなの実現不可能だと思うけど。何使っても。
もしそういうライブラリーが見つかったら、報告よろしく。
0274266
03/12/06 15:07ID:???ttp://www.brain-tokyo.jp/research/amrita/index_ja.html
PHPでというのが要件なので、探しているのです。
0277nobodyさん
03/12/10 17:44ID:d5KtgpUB使って割り当てたもの、という意味なんでしょうか?
出力したい変数が多数あるのですが、テンプレート内で{$hoge} とする
だけでは出力しないものなんでしょうか?
0278nobodyさん
03/12/10 17:48ID:???でいいじゃん
0279277
03/12/10 17:51ID:???ちゃんとマニュアルを読めば分かることでした(汗
assign などを使わないと、どこからも割り当てられていない変数を
表示しようとしちゃうんですね。あうー はずかちー
0280nobodyさん
03/12/12 00:15ID:BBYj3pBU「デザインとプログラムの分離」ができるという点で、
良さを伝えたいのですけど、PHPそのものでいいじゃんと言われてしまいます。
社内にSmarty広めたいのだけど、どうすればいいのだろう?
(キャッシュとかできて高機能だよ、とは言えるんだけど、
「デザインとプログラムの分離」の点で、説得できない・・・)
0281nobodyさん
03/12/12 00:18ID:???{$vari}も
<?=$vari?>
も
標記的にはほとんどかわんないし、
べつに<?=$vari?>でイイじゃん
って思うんだけど、
なんでわざわざ
smartyなの?
0282nobodyさん
03/12/12 01:04ID:C20HZJQrおれはそうやって作ってる
かなり見やすいしさ。Smartyはちょっと見たけど、あまり魅力を感じない。
現時点ではね。
0284nobodyさん
03/12/12 10:18ID:???PHPだけでやればよい。
そうでないなら分けたほうが絶対便利。
あとはテンプレートエンジンの比較のはなし。
PHPで独自のテンプレートエンジンつくればいいっていう
頑固おやじはデザイナにそれの使用を強要して
使いにくいは、マニュアルもないはで、
「これだからプログラマは・・・」って言われるのがオチ
0285nobodyさん
03/12/12 11:49ID:???0286nobodyさん
03/12/12 11:51ID:???人たちは、
1.入力フォーム表示
2.内容確認ページ表示
入力エラーがあった場合は1に戻ってエラーメッセージを表示
「再入力」ボタンが押された場合は、入力内容を保持して1を表示
入力エラーが無ければそのまま確認ページを表示
3.処理結果表示
処理中に問題があった場合は2に戻ってエラーメッセージを表示
というフローを実現する時にどうしてるの?
0287nobodyさん
03/12/12 12:01ID:???でページを分けて
セッションを使いつつ
リダイレクトさせればOKじゃないの?
0288286
03/12/12 12:12ID:???ファイルを分けた場合、2で生成したエラーメッセージは
どうやって1のフォームに表示しますか?
セッションに持つんじゃダサすぎるよね。
0289nobodyさん
03/12/12 12:15ID:???セッションじゃだめなの?
別にPOSTでもいいけど
セッションがいやならPOSTにすればいいんじゃないの?
0290286
03/12/12 12:39ID:???セッションが使えない場合にエラーメッセージが表示されなくなるのは
アプリケーションとして問題ありじゃないですか?
常にセッション前提の開発が出来るんなら別ですけど。
あと、2でPOSTにエラーメッセージを詰め込んでから
1にリダイレクトしても意味ないような気がしますが…。
0291nobodyさん
03/12/12 12:43ID:???それならポストが使えない場合、GETが使えない場合とか
考えるとキリがないと思うんだが。
あと、何で意味無いのかわからない。
じゃあ、どうするの?
というか、これ全然smartyに関係ないと思うんだが。
0292286
03/12/12 12:53ID:???今時セッションが使えない場合ってのはないかもね。
でも、POST/GETメソッドが使えない場合なんてある?
リダイレクトってLocationヘッダを使うってことだよね?
そうすると$_POSTの内容ってまっさらになってしまう気がするんだけど。
俺の場合、>>286で書いたフローを実現するのに単一のファイルに
input()、confirm()、commit()みたいな関数を作って処理してる
のだけど、こういう構造にするとHTMLとコードを混在させるのはまず
不可能なのでHTML部分はSmartyで別ファイルにしています。
で、「Smartyイラネ」とか言ってる人はこの辺どうやってるのか不思議だったんですが。
0293nobodyさん
03/12/12 13:27ID:???<?php
〜〜〜〜〜
〜〜〜
処理、このなかで出力するテキストなどを
変数にセット
〜〜〜
?>
<HTML>
<BODY>
<? echo "$phpでセットした変数"?>
<?=$phpでセットした変数?>
0294nobodyさん
03/12/12 14:02ID:???main.php:
<?php
if (!is_numeric($hoge)) {
$status = "ng";
$message = "数字を入力して下さい";
}
if ($status == "ok") {
include ('complete.html');
exit;
}
include (question.html);
exit;
?>
question.html:
<?php print $message; ?>
<form action='main.php'>
<input type='text' value='<?php print $hoge; ?>'>
</form>
みたいにして、question.html をドリームウェーバーor 手書きで編集してました。
なので、あまりSmarty は必要ないかな、と思っていましたが、入力エラーのときに
option やcheckbox のvalue 値を引き継ぐのはSmarty の方が便利でした。
0295nobodyさん
03/12/12 15:12ID:???わざわざ鯖に仕事させなきゃ駄目?
0297nobodyさん
03/12/12 15:48ID:???javascriptとかリダイレクトとか。
そんなの言ってるの趣味でやってる学生とかだろ?
そんなのスルーでお願いしますよ
0298286
03/12/12 16:07ID:???商品情報編集ページを作るとして、入力してもらった商品IDをもとにデータベースを
見に行ったが該当する商品が無かった場合に「入力されたIDは存在しません」みたいな
表示をする場合はどうしますか?
そもそも、クライアントサイドでの書式チェックとサーバサイドでの内容チェックは別物ですよ。。
0299nobodyさん
03/12/12 19:57ID:???みなさんは無視してます? ソースに手を付ける?
それとも付いてると何かいいことがあるのかしらん??
0300286
03/12/12 20:15ID:???<label>要素が付くと、チェックボックス部分だけでなく文字列を
クリックしてもトグルできるようになるよ。
[x] この文字列をクリックでもOK
IEはどうか知らんけど、Firebirdではちゃんと動くから俺は
気にせず使ってる。
0301nobodyさん
03/12/12 21:55ID:???0302286
03/12/12 22:37ID:???JavaScriptをオフにするとまともに閲覧できない企業サイトもあるわけだが。
と言うか別にJavaScriptを使うのは構わないんだけど、エラー処理を
JavaScriptだけで行おうとするWebプログラマはアホということ。
0303nobodyさん
03/12/13 00:34ID:lh7ZJy1b0305nobodyさん
03/12/13 14:25ID:???0306nobodyさん
03/12/13 15:55ID:???0307nobodyさん
03/12/13 18:03ID:???あのスレは途中でタイトルが間違ってる事を指摘されてたワケだが。
実際に仕事とかで「デザインとコンテンツの分離が・・・」とか言い出したヤツがいたら
あぁコイツは分かって言ってねーんだなぁと9割方思っていい。
0308nobodyさん
03/12/13 19:59ID:???んんと、Smarty使ってるような感じで
そのまま別のPHPファイルをincludeしてる
SmartyはSmartyで便利と思うんだけど
Smartyのコードだと外部ファイル側で小回りが利かなくなるというか・・・
0309nobodyさん
03/12/13 22:37ID:ittzKU4pWarning: Smarty error: problem writing temporary file '/home/sites/site40/templates_c/\%%117\%%1172603085\3fdb11ae15d5f' in d:\home\sites\site40\smarty\Smarty.class.php on line 1144
Warning: touch(): Unable to create file /home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php because No such file or directory in d:\home\sites\site40\smarty\core\core.write_compiled_resource.php on line 31
Warning: fetch(/home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php): failed to open stream: No such file or directory in d:\home\sites\site40\smarty\Smarty.class.php on line 1291
Warning: fetch(): Failed opening '/home/sites/site40/templates_c/\%%117\%%1172603085\index.tpl.php' for inclusion (include_path='.;c:\php4\pear') in d:\home\sites\site40\smarty\Smarty.class.php on line 1291
チェックすべき点や参考になるサイトなどがあったら教えていただけないでしょうか?
環境
Windows2000 professional
php4.3.4
0310309
03/12/13 22:44ID:???$smarty->template_dir = '/home/sites/site40/templates/';
という風にしていたのを
$smarty->template_dir = 'd:/home/sites/site40/templates/';
としたら動きました。
スレ汚し申し訳ないです。
今からしっかりと勉強してSmartyの世界につかろうと思います。
0311286
03/12/14 01:13ID:???んー、なるほどね。
俺は逆にincludeするファイルがPHPで書かれていると、<?php ?>タグが
デザイン(HTMLタグ)とごっちゃになっちゃう気がするのでSmartyにしてます。
いざとなればSmartyのテンプレートファイル中に
{php}
// PHPのコード
{/php}
とすることもできちゃうし。
まあ、実際にはPHPのコードを書かなければいけない状況になったことは無いですけど。
0312308
03/12/14 04:19ID:???俺もSmarty化しようと思って
実際使ってみてやっぱり辞めた派なので
HTMLタグとの区別がスッキリするというのはよくわかります
辞めた理由としては
やっぱりインラインでデザイン側にいくつか変数欲しくなった時でも
いちいち呼び出し側でassignしなきゃいけないのが面倒でした
今は事実上Smartyみたいな構成にして
PHPコードで書かれたデザイン用ファイルを用意して普通にincludeしてます
HTMLタグとの混合はショートタグでだいぶましにはなります
それでもやっぱりスマートじゃないよう気がしますが・・・
やっぱりPHPネイティブのテンプレート機構が
あるのが一番いいなと思います
0313286
03/12/14 13:22ID:???「いちいち呼び出し側でassignしなきゃいけない」ということは、
デザインとロジックの分離が強制されるということなので気にしないようにしてます。
あと、ショートタグを有効にしているとXHTML(XML)を記述する時にハマるのも
気をつけたいところ。
0314nobodyさん
03/12/14 13:33ID:???$aaa->c1 = "111";
$aaa->c2 = "222";
$tpl->assign("aaa", $aaa);
$tpl->display("xxxx.tpl");
-------------------------
{$aaa->c1} {$aaa->c2}
変数増えても平気だ
0315nobodyさん
03/12/19 10:20ID:hqiHAaNv関数はありますが単純に数値でループさせるにはどうすればいいのでしょう。
例えば10という数値をアサインして,テンプレートで10回処理を繰り返す
(例えば改行を10回入れるなど)といった処理です。
forは無いようですし,doやwhileもありませんよね?
0316nobodyさん
03/12/19 11:22ID:???Smartyの良いトコの一つとしてプラグインによる拡張があるワケで、
こういうタグが無いぞ!と思ったら
http://smarty.incutio.com/?page=SmartyPlugins
から探すか、もしくは自分で作る。
ちなみに回数を指定して繰り返したいなら、BlockRepeatPluginで
そのものズバリの事が出来る。
0317nobodyさん
03/12/19 11:27ID:???なるほど。
forのような基本的な関数が無いはずが無いとマニュアルを何度も探していたのですが,
プラグインを使うのですか・・・
紹介していただいたサイトとプラグインをよく読みます。
ありがとうございました。
0318nobodyさん
03/12/19 13:00ID:???forやdoやwhileは、その条件や回数がテンプレート(View)とは無関係なものだから
テンプレート内では使えないようになってるんでしょう。
改行を10回入れたい場合はコードのほうで、
$smarty->assign('loop', 10);
とやっておいて、テンプレートでは
{section name=foo loop=$loop}
<br>
{/section}
でOK。
0320nobodyさん
03/12/19 13:15ID:???そうなのか?ってどっちのこと?
forやwhileが無い理由はそういうことだと思うけど。
動的にページの要素を増減させたいケースっていうのはつまり、
「商品の数が増減するからテーブルの行も増減する」とか
「User-Agentによって一部分を表示させたくない」とか
ロジックによる処理ばっかりでしょ。
0321317
03/12/19 13:36ID:???> {section name=foo loop=$loop}
> <br>
> {/section}
確認しました。こんなことが出来るんですね。
何で今まで試さなかったんだろう・・・orz
いままで,array_padでダミーの配列を作ってループしていたので,
メモリも節約できて助かります。
$smarty.section.hoge.indexも使えるのでsectionが使えれば万々歳です。
ありがとうございました。
0322nobodyさん
03/12/19 15:42ID:???$output .= "{$section_props}['loop'] = is_array($attr_value) ? count($attr_value) : max(0, (int)$attr_value);\n";
ってことだった。
loopには配列しか指定できないもんだと思ってたよ。
0323nobodyさん
03/12/20 21:52ID:???やっぱりみんな手で組んでるの?
これじゃ、せっかくデザインを分離できてもなーー
0326nobodyさん
03/12/22 21:59ID:???Dreamweaver使ってないんだけど、どういう問題?
SmartyタグのせいでHTMLが正しく解釈されず、デザインビューがメチャクチャになるって事?
多少の対策として、デリミタを{ } から <{ }>みたいにしてるね。xoopsとかは。
0327nobodyさん
03/12/23 00:10ID:???デザイナが編集するときにきれいに表示されないってことです。
{section xxxx.....}
とかはそのまま表示されてしまいますし
もちろん
{if xxx}
xxx
{else}
xxx
{/if}
とかも表示が崩れます。
if文の中でタグの開始とか終了とかやってると顕著です。
xoopsかー
ちょっと見てみようかな
0329323
03/12/23 23:30ID:???自分は、趣味で作ってるサイトでやってるだけなので、
ドリにタグが出ても、問題ないです。
職場でもphpとかで開発してるけど、
Smarty?何それ?と言われた(泣く
0330nobodyさん
03/12/24 01:11ID:???0331nobodyさん
03/12/24 01:24ID:???どいつもこいつも独自仕様なんだよな。
大差ねえ野に。
0332nobodyさん
03/12/27 20:35ID:???特にメリット無いよね?
オーバーヘッドが無いとか色々書いてあったけど、
別にこれを使う事で開発が楽になったりプログラムの実行速度が速くなったりはしない?
0334nobodyさん
03/12/28 09:49ID:???クラスとか関数の定義を読み込んだりする
最初にかかる時間の事だと思ってますが
ちゃんとした本とかで勉強した事が無いので合ってるかどうかは分かりません。
0335nobodyさん
03/12/30 11:17ID:???しばらくお待ちください。
0336nobodyさん
04/01/02 22:22ID:???今年もSmartyを使っていろいろ開発していきましょう!
という自分は、現在自分のサイト(趣味で作っているヘボサイト)を
勉強をかねてSmartyを利用して再構築しています。
正月休みは、マニュアルを読みながらひとつひとつの動きに
感激しっぱなしでした。
仕事でJavaServletやJSPを利用したWebシステムの開発をしているので、
Smartyは非常にとっつきやすいです。
0337nobodyさん
04/01/04 01:15ID:LkXOe+SCtplファイルに<?xml version="1.0" encoding="utf-8"?>
としても特に問題起こらないですか?
(もちろんtplファイルの文字コードはutf-8。ただし、phpスクリプトはEUC)
0339337
04/01/05 22:52ID:SHqc05ocいちお、いまんとこ問題なさげなんだけど・・・
0342nobodyさん
04/01/11 21:34ID:ESnicSkb/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、Smartyはスマートだ。
|| | | | \ ┃ ┃/ \________
| || | |  ̄  ̄|
0343nobodyさん
04/01/12 02:03ID:???全然デザインとロジックの分離ができてねーじゃん。
糞杉。
0344nobodyさん
04/01/12 03:28ID:???0345nobodyさん
04/01/12 12:58ID:???0346nobodyさん
04/01/12 14:36ID:XY33XXMX=@ /_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (6 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < 正直、Smartyは名前の通りスマートだ。
|| | | | \ ┃ ┃/ \________
| || | |  ̄  ̄|
0347nobodyさん
04/01/12 19:22ID:???0348nobodyさん
04/01/12 23:29ID:???0349nobodyさん
04/01/18 13:31ID:stryZ8840350nobodyさん
04/01/19 08:48ID:vtz23jMl0351nobodyさん
04/01/28 19:47ID:???0352nobodyさん
04/02/12 11:33ID:KTntpHdL私はホームページビルダー7を使ってますが、画面をデザインした
あとに、必ずHTMLを見て修正する必要があるんです。
例えば、適当にHPビルダーでフォームとか配置して部品を付けると、
それぞれの部品が<form>でくくられてしまったり・・・
なのでデザイナさんに画面を作ってもらっても、結局それをデザイ
ンを壊さないようにエディタで修正するハメになるのです。
ホームページ作成ソフトで作ったら、そのHTMLは見なくていい。
そんなホームページ作成ソフトはないでしょうか?
0353nobodyさん
04/02/16 06:31ID:fxjTO9Xi同感です。
私も、いいホームページソフトを教えてほしいです。
0354nobodyさん
04/02/18 05:55ID:Rpd68eXEDreamweaverなどは?
いちおうPHPなどにも良さそうなことがメーカのHPに書いてありますが・・・
0355nobodyさん
04/02/18 08:05ID:bgploQOuもともと、
------------------------------------------------------------
<html>
(略)
{php}
include("./category/" . getParam( 'cat' ) . ".inc");
{/php}
(略)
</html>
------------------------------------------------------------
というtmpl(テンプレートファイル)があるのですが・・・
(ちなみに、getParam関数は↓こんなかんじ)
function getParam( $name )
{
$val = $_GET[$name];
if( $val == "" ){
$val = $_POST[$name];
}
return( $val );
}
で、catの値によっては、
includeしたファイルの中で、さらにsmartyを使いと思ってます。
マニュアル見たり試行錯誤してもわらなかったので、
どなたかご存じの方、いらっしゃったら、教えていただければ幸いです。
0356355
04/02/18 09:04ID:???incファイルの中で、
global $smarty;
$smarty->assign("foo", $line[1]);
$smarty->assign("bar", $line[2]);
とやったらできてしまいました。
(するとこれは、「入れ子」とはいわないのかな。まぁいいや)
0358nobodyさん
04/02/18 09:44ID:???そもそもその incファイルでは $lineは定義されているのか?
俺ならテンプレートリソースにするのが簡単かつ安全だと思うけど。
あと、脱字大杉
0359355
04/02/18 10:55ID:???>$lineは定義されているのか?
はい。
「テンプレートリソース」というものを知らないので、勉強してそっちでやってみるかもしれません。
ありがとうございます。
>あと、脱字大杉
どうもすみませんでした。
引っ越しして超ナローバンドなためきつい・・・。
後2週間はこのままかと思うと気が重いっス。
http://sourceforge.jp/projects/phpoot/
ネタ投入。
見る限りではなかなかよさそうなんだけど、
誰か使ってみた人いますか。
自分所では動作しなく・・・。
>>352-354
自分はDreamweaver使ってますよ。
設定すれば勝手に書き換えたりしなくなるし。
(比較的)まともなHTMLはき出してくれるので、ver1.2の頃から愛用しています。
0361nobodyさん
04/02/29 08:02ID:???俺も翻訳者のwebみて知ってこれ良さそうと思ったけど
何ひとつサンプルが動かないのは如何なものか(´д`;)
ぜったい テストされてねぇ〜・・・・・
とりあえずソース何ヵ所かいじったら動いたけど<img><br>タグ閉じてないよっておこられまくって
ふて寝しますたorz
む、動きましたか?
触った箇所教えてくれると助かりまつ。
<img><br>が動かないのは、XHTML準拠、とのことでエラーになってるのかと。
それぞれ
<img src="hogehoge" />
<br />
にして試してみてー。
0363nobodyさん
04/02/29 16:53ID:???phpoot::_compileに渡す compiled_fileの作成の仕方が間違ってるね。
存在しない pathに対して realpath()を使っていらっしゃる。
× $compiled_file = realpath($this->_compiled_dir . '/' . basename($this->_template_file) . PHPOOT_EXT);
○ $compiled_file = realpath($this->_compiled_dir . '/' . basename($this->_template_file)) . PHPOOT_EXT;
<img><br>ってのはサンプルにはないよね?
試しに書いてみたけど、<img> -> <img />に補正されるし、<img><br>は削除されるし、
こいつは XML_HTMLSaxのせいか? PEAR使ってるなら、命名規則も従ってくれると良いね。
Amrita意識してるようだけど、この品質なら、今から使うメリットはなさそうだと思った。
Smartyは枯れてきてるし、PEARなら HTML_Template_Flexyのほうが`まだ`出来が良い。
サンクス。
こっちでも一応動作確認出来ました。
まあ、今後に期待ってことでSmartyに戻ります(笑
うちの環境だと、一回目のアクセス時(つまりcompileするときに)
phpoot.parser.phpがundefined index出しまくりで気になる・・・。
0365nobodyさん
04/03/08 07:32ID:???0366nobodyさん
04/03/11 16:02ID:???現在すべてのページで
<?php
include 'header.php';
//メイン処理
include 'footer.php';
?>
としていますが、これをSmarty で記述する場合、
main.tpl の中でindlude or include_php するのが良いのか、
main.php の中で、
func_assign_header();//ヘッダー用の表示をアサインする関数
func_assign_footer();
$smarty->display('header.tlp');
$smarty->display('main.tlp');
$smarty->display('footer.tlp');
みたいにすれば良いのか、或いはもっとべつの良い方法があるのか・・・というより、
ありそうだなあ、と悩んでいます。。。
>>96 さんとほぼ同じケースだと思うのですが、アホなので>>97 さんのアドバイスが
良く分かっていません。
ヒントへのポインタでも結構ですのでアドバイスをお願いできますでしょうか??
0367366
04/03/11 16:11ID:???今のところ<title>xxxx</title> に表示するデータの一部を入れているだけですが。。。
0368nobodyさん
04/03/12 01:00ID:9XQjrMWLpluginsがエラーになるんですけど...
ちなみにSmartyは/usr/local/lib/php/Smarty/以下にインストール
しています。オーナーはrootです。
アプリのオーナーはroot以外のユーザーです。
プログラムは{html_options}のリファレンスのサンプルです。
エラーメッセージは
Fatal error: Smarty error: [in XXXXXXXX.tmpl line nn]: [plugin] unknown tag - 'html_options' (core.load_plugins.php, line 118) in /usr/local/lib/php/Smarty/Smarty.class.php on line 1102
Safe mode系のエラーの場合は
SAFE MODE何たらかんたらとかuid/gidがなんたらというメッセージが多いと思うんだけど...
アプリのオーナーをrootにしたりSafe modeをOffにすると正しく動くのよね。
php.iniがいけないのかなぁ?
0370nobodyさん
04/03/12 21:47ID:???Smartyのサブクラスを作成(例:mySmarty)して、
親クラスのメソッド:display()をサブクラスでオーバーライドしれば?
mySmartyの生成時にヘッダ・フッタのデータを渡して、
$mySmarty->display()したときにmySmarty内部で、
ヘッダ・フッタをassignして、親クラスのdisplay()を呼ぶみたいな。
0371nobodyさん
04/03/13 00:31ID:???main.php では、
func_assign_header();
func_assign_footer();
$smarty->display('main.tpl');
main.tlp 内で、
{include file="header.tpl"}
{include file="footer.tpl"}
僕ならこうする。
どうするのが良い悪いよりは好みの問題でしょうね
0372nobodyさん
04/03/15 13:25ID:???先週から使い始めました。
header.tlp
footer.tlp
上記の2ページの内容or作る人のスタイルにもよると思いますが、
ヘッダー・フッターが静的なHTMLなのであれば、テンプレート側で読み込んだ方が、
テンプレートを作る人のことを考えれば理解しやすいんじゃないでしょうか?
テンプレート作る人が、呼び出し元のPHPを読まないと、
ページ構成を理解できないっつうのは、Smartyの利点を1つ殺してる気もするし・・・
0373nobodyさん
04/04/20 02:11ID:???http://smarty.incutio.com/?page=pager
これの使い方が今ひとつ分かりません。どなたかヒントいただけないでしょうか?
0374nobodyさん
04/04/20 19:31ID:???使った事ないからなんともいえないけど
0375373
04/04/21 14:27ID:???今のところ次の方法で使えてます。
基本的には
{pager rowcount=レコード総数 limit=ページ内に表示する数 txt_first=""}
で、各ページへのリンクがずらずらと並びます。
細かなパラメータは、
show='page' or 'record' //表示される数値をページ数とするかレコード数とするか
posvar='now_page' //現在位置を識別するための変数名
forwardvars=$forwardvars //$forwardvars=array("hl"=>"ja","lang"=>"lang_ja") など、
ページ間で引き継ぎたい変数と値
txt_prev='<<<' //「前のページ」
txt_next='>>>' //「次のページ」
separator='-' //ページorレコード数の区切り文字
shift='1' //posvar の初期値
・・・等々
なお、こちらで使用しているスクリプトとの兼ね合いから、function.pager.php の142 行目の
!empty($value) をisset($value) に変更する必要がありました。注釈文にあるように、
$_REQUEST で変数を受け取るなら変更は必要ないのかも知れません。
で、一応使えるようにはなったのですが、参考にしたPEAR/Pager のほうが使いやすそうですね。
Smarty との連携をどうすれば良いのかまだちょっと見えていないのですが・・・。
#PEAR のDB_Pager って今後はDB_common::limitQuery() の方を使うほうが良いのかな??
0376nobodyさん
04/04/21 17:55ID:???limitQueryでもlimitつけたSQLでも同じなんだけど
SQLの時点でlimitをつけちゃうと実質の総レコード数が取れない
25レコードあったとしてlimit 10, 20のクエリでnumrowsすると10が返って来る
ページャのロジック書こうとすると総件数がいる
DB_Pagerの便利なとこは引数投げるとfrom-limit間のレコードだけを
fetchする状態の結果セットを返してくれる
だから俺はDB_Pager使ってる
0377nobodyさん
04/04/23 13:02ID:???{section name=book loop=$main_dat}
{$main_dat[book].name}
{$main_dat[book].memo}
{section name=book_sub loop=$sub_dat[book]}
abc
{$sub_dat[book][book_sub].job}
{$sub_dat[book][book_sub].personid}
{$sub_dat[book][book_sub].name}
{/section}
<br>
{/section}
section の例を見ながら↑のようにしてみたのですが、内側のループが実行されません。
元になるphp 側では、
while ($i < $num) {
$main_dat = $result[$i];
$smarty -> append("main_dat", $main_dat);
$j = 0;
while ($j < $sound_sub_num) {
$sub_dat = $result_sub[$j];
$smarty -> append("sub_dat[$i]", $sub_dat);
$j++;
}
$i++;
}
こんな感じでassign しています(こまかな処理は省略しています)。
0378377
04/04/23 13:03ID:???{$main_dat}
Array (2)
0 => Array (3)
id => 266
name => fmlバイブル
memo => empty
1 => Array (3)
id => 267
name => PostgreSQL完全攻略ガイド
memo => empty
{$sub_dat[0]}
Array (2)
0 => Array (3)
personid => 2437
name => 深町某
job => 著者
1 => Array (3)
personid => 358
name => 佐々木某
job => 監修
{$sub_dat[1]}
Array (2)
0 => Array (3)
personid => 291
name => 石井某
job => 著者
1 => Array (3)
personid => 648
name => 山本某
job => 出版
こんな感じに表示されます。
0379377
04/04/23 13:04ID:???バッククォートあたりだとは思うのですが{`$sub_dat[0][0].job`} とすると
syntax error: unrecognized tag のFatal error が出てしまいます。
アドバイスをお願いできますでしょうか? 長文ごめんなさい。
0380377
04/04/23 13:42ID:???{$sub_dat}
Array (2)
0 => Array (2)
0 => Array (3)
personid => 2437
name => 深町某
job => 著者
1 => Array (3)
personid => 358
name => 佐々木某
job => 監修
1 => Array (2)
0 => Array (3)
personid => 291
name => 石井某
job => 著者
1 => Array (3)
personid => 648
name => 山本某
job => 出版
こうならないとsection の例文は使えないんですね。すっかり煮詰まってました。
php 側をちょっと直せばできそうです。うう、、、スレ汚し済みませんでした。
0381nobodyさん
04/05/14 17:14ID:???外部ファイルを書き出すことはできますか?
0382381
04/05/14 19:38ID:???0384381
04/05/15 01:31ID:???$smarty->displayだと、出力しちゃいますよね。。。
0385nobodyさん
04/05/15 01:50ID:???せっかく日本語であるのに
0386381
04/05/15 02:01ID:???// 出力を取り込む
$output = $smarty->fetch("index.tpl");
ですね。ありがとうございました。
0387nobodyさん
04/06/06 14:52ID:???連想配列はまだいいんだけど。
0388nobodyさん
04/06/10 14:49ID:???のformtool_move, formtool_moveallを使いたいんだけど、
The "save_from" and "save_to" parameters are the names of a hidden fields in the form that the new orders are saved into, comma separated.
この文の意味が理解できない。orz
FORMを作るときに"save_from" と "save_to"という名前を持つ hidden フィールドを
作れということ?NAMEはいいとしてVALUEには何を入れるのだろうか?
0390nobodyさん
04/06/10 20:03ID:???例題をそのまま試すと、テーブルは表示されるのですが、中のボタンが表示
されるところで、
Warning: Smarty error: formtool_moveup: missing 'save_from' parameter
in C:\Apache\Smarty\Smarty.class.php on line 1102
というWarningがでます。
0391nobodyさん
04/06/11 15:12ID:???{formtool_moveall from="colors5[]" to="colors6[]" save_from="dd" save_to="ff" button_text=">>"}
のように{formtool_moveall ・・・} と{formtool_move ・・・} の中に、
save_from="dd" save_to="ff"
を入れておくと取りあえずmove は出来るようだ。
dd, ff はjavascript で
<input type=button value="<<" onClick="formtool_moveall(this.form.elements['colors6[]'],this.form.elements['colors5[]'],this.form.elements['dd'],this.form.elements['ff'])">
のように展開されるので、適切なものに変更すれば良さそう。
javascript は詳しくないので、あとは調べて還元してくれると嬉しい。
0392388=390
04/06/11 16:54ID:???お手数おかけしましてすみません。
demo画面のソースをみると、ddやffはcolors5_saveやcolors6_saveなんかに
置き換えると良さそうです。
しかし、実行してみるとページエラーが発生してmoveができませんでした。
JavaScriptコンソールでみるとformtool_moveは定義されてないとエラーが
でています。
私もJavaScriptはよくわからないのですが、この機能は是非使いたいので
調べてみます。
0393nobodyさん
04/06/11 17:24ID:???{formtool_init src="/hoge/javascripts/formtool.js"}
は入れた? パスは適宜直してね。
0395nobodyさん
04/06/28 15:15ID:???過去ログさらってみましたが見あたらないので質問をば。
--
Smarty を久々にバージョンアップした所、動作が変わって対処に悩んでまつ。
定義されていないテンプレート変数、例えば {$hoge} に assign が無ければ、
以前はスキップしてくれたのですが、バージョンアップ後は
>FATAL .. Undefined index hoge
とエラーを吐いています。
いちいち {if isset($hoge)} と囲うのも鬱陶しく、どう対処すべきかな〜、と。
# Smarty の設定かと思いマニュアル見直しましたが適当な設定は見あたらず。
# $smarty->undefined = NULL とかも試しましたが変化無しでした。
0396nobodyさん
04/06/28 15:55ID:???違うかもしれんが、
{$hoge|default:""}
でいいんでないかい?
0398396
04/06/28 16:51ID:???テンプレートの最初のほうとかに
{assign var="hoge" value=$hoge|default:""}
見たいに書いとくとすっきりするかもね。
単発で使うのなら{$hoge|default:""}でよさげ。
0399nobodyさん
04/06/28 23:20ID:???テンプレートというより新しい言語のようだ。
乗り換えることにする。
0400nobodyさん
04/06/29 00:19ID:???どんな優れたライブラリでも、使い方次第で単純にも煩雑にも書けるわけで。
smartyにいたってはテンプレートにロジックを書く事を許容しちゃってるので
mvc(もう少し適切な言葉がありそうだな・・・)を意識しないとsmartyを
使用する有り難味が薄れるだろうね。まぁ俺はとっくに乗り換えたんだけれど・・・。
>>395
$smarty->undefined はもう無くなったよ。未定義の場合は基本的にnullで決めうちになった。
ただ、テンプレート変数のtypoがあった場合に何も表示されないだとデバッグに困るから
$smarty->debugging = true; の時だけエラーが出るようになってる。
だからこれをfalseにしたらどう?一応2.6.3で確かめてみたところ大丈夫だったが。
0401395
04/06/29 02:54ID:???>>400
情報感謝。
で、勘違い爆裂でしたので経過報告 _| ̄|◯
コンパイル後に生成されるコードはそれぞれ
修正子有り <?php echo $this->_tpl_vars['hoge']; ?>
修正子無し <?php echo ((is_array($_tmp=@$this->_tpl_vars['hoge'])) ? $this->_run_mod_handler('default', true, $_tmp, 'funi') : smarty_modifier_default($_tmp, 'funi')); ?>
で、旧バージョンの Smarty でも確認してみると生成されているコードは同じ、、という事は Smarty の問題ではない。
同じマシン上で PHP も php.ini も同じ物を使用していて両者の違いは、と言えば採用している他のライブラリ。
結局原因は Mojavi のエラー制御にある模様。
お手数かけますた、、
PHP 4.3.4 (Win)
Smarty 2.6.3
>>399,400
よろしければ遷都先のテンプレートなぞを、、
自分は次は Flexy 使ってみようかな、とか考えとります。
0402400
04/06/29 03:57ID:???生成されるコードに違いはなくても、debugging = false した時に
fetchメソッドの内で error_reporting() & ~E_NOTICE されるようになってるんだけど。
mojaviはE_ALL前提で作られてるし、(ていうかコードの初っ端がerror_reporing(E_ALL);)
途中でエラーレベルも変更したりしないから、やっぱsmartyか原因かと思うんだけど・・・違う??
0403395
04/06/29 05:20ID:???勉強になります。
Mojavi を使っていない方のアプリケーションの Smarty を 2.6.3 に入れ替えてみた所、問題は発生しませんでした。
って事でやはり Mojavi かな、と。。
> fetchメソッドの内で error_reporting() & ~E_NOTICE されるようになってるんだけど。
Mojavi によりエラーハンドラに errorLogger::standard() が設定されており、
件の <?php echo $this->_tpl_vars['hoge']; ?> で E_NOTICE レベルのエラーが発生し上記エラーハンドラが呼ばれています。
で、E_USER_* 以外の振り分けが考慮されておらず、errorLogger::fatal に回されて FATAL として解釈され、
FATAL ..(snip).. undefined index
のようなエラーメッセージが出力されている模様。
errorLogger::standard() の中で error_reporting の値をとってみると 2039 になっており E_ALL ^ E_NOTICE と等価でした。
php.ini と mojavi では error_reporting に E_ALL を指定しています。
眠くてまとまらないのですがこんな所で、、
# 問題が Smarty にあると思い込んで突っ走ってしまったのが敗因、、orz
# でも色々と助言をいただき良い勉強の機会になりました。多謝です&お手数かけました。
0404nobodyさん
04/07/06 17:04ID:???俺のアドレナリンが吹き出る。
あとはPHP エディタで対応してくれれば文句なしー。
0405nobodyさん
04/07/14 10:40ID:???何かをセレクトして右から左へ移動…1
何もセレクトせず左から右へ移動…2
1のときと1+2のときでフォームから送られてくる値が違う
(2の操作で値全体が入れ替わってしまう)。
Javascriptがわかれば直すんだけど…
0406nobodyさん
04/07/17 11:11ID:ckMFe6vnエンコードはUTF-8を使ってます。
0408406
04/07/17 12:16ID:???いくつかの文章で試してみました。
EUC-JPの時は文字化けしてたけど、UTF-8なら一見すると大丈夫かと思ったら
よく見ると文字が一部消えたりしてました。やっぱダメそうですね。
0409nobodyさん
04/07/22 17:59ID:gMMxLyKoやまない雨はないじゃない
0410nobodyさん
04/08/01 00:39ID:QU2e9+ueなんで、みんなSmaryマンセーなの?
0411nobodyさん
04/08/01 04:46ID:???0412nobodyさん
04/08/01 08:44ID:QU2e9+ueえー、そんな事言わずに教えてよぉー。
0413nobodyさん
04/08/01 13:32ID:???0414nobodyさん
04/08/01 17:08ID:???プログラミング言語としては簡単な部類に入るかも知れないけど、
HTMLくらいしか理解できないヤシにはとっつきにくい。
例えばforeach構文とか、デザイナーに理解できるか、と言えば
(人それぞれなのはもちろんだが)確実には理解できないと言っていい。
Perlの話になるが、代表的なTemplateとして、HTML::TemplateとTemplate::Toolkit
と言うのがある。Template::Toolkitは、様々な構文やら他のPerlモジュールを呼び出す機能やら、
その他もろもろの機能がついている。逆にHTML::Templateはif分のtrueとfalseの判定、
そしてループ機能くらいしかついていない。
どっちがいい?と聞かれれば、プログラマ的にはTemplate::Toolkitの方が楽。
でも、デザイナーには多分HTML::Templateのほうがわかりやすい。
PHP単体でMVCするのもいいんだけど、Smartyにしてある種の機能制限の方がわかりやすいって人もいるんだろう。
漏れはPHP単体のMVCだけどw
0415nobodyさん
04/08/02 03:23ID:???ビューをデータが規定するタイプのものならともかくそれ以外ならどれも変わらね。
410には馬鹿馬鹿しくて答える気がおきね。
0416nobodyさん
04/08/02 14:58ID:???ちゅまんね〜。
0417nobodyさん
04/08/02 14:59ID:???0418nobodyさん
04/08/03 00:05ID:???0419nobodyさん
04/08/03 18:16ID:???0420nobodyさん
04/08/04 16:49ID:T7C0bXmtなにかアドバイスをお願いします。
0421nobodyさん
04/08/04 16:56ID:???宿題は自力でやろうな坊や
てか、ここで聞くな馬鹿
0422nobodyさん
04/08/04 23:15ID:???0423nobodyさん
04/08/05 21:11ID:???0424nobodyさん
04/08/05 23:41ID:???0425nobodyさん
04/08/06 11:13ID:???っと、書き込もうとして気づいた。register_functionで追加すればいいのか。
number_formatならregister_function使わなくても呼べますよ
0427nobodyさん
04/08/09 01:33ID:???あら本当だ。フィルタ的に使えるのね。
つーか、引数1つで戻り値があるPHPの関数は以下の要領で使えるんですね。
{$number | number_format}
{$string | md5}
引数が複数の場合はどうするんだろう。出来ないのかな?(そんな機会はそうそうなさそうだが)
マニュアルに書いてありましたっけ?
探してみたんですけど、どこに載っているのか見つけられなかった。
引数が複数ある場合は第2引数以降をコロン区切りで。
かなり極端な例だと
{long_multibyte_string|mb_strimwidth:0:40:"..>"}
こんな感じ。
まあでも、ここまでテンプレートに書くのはどうかとも思う・・・。
「見た目の変更」だからテンプレートに書いてもいい気がするけど
{long_multibyte_string[i].titile|escape|mb_strimwidth:0:40:".."|defaust:"データ無し"}
とかどうなのかと(苦笑
0429425=427@ ◆Kiss.FX29M
04/08/09 09:33ID:???いろいろどーもです。
>>425のregister_functionに気づいた時点で書き込みをやめようと思ったんですが、
書き込んでよかった。勉強になりました。
//何気に古い酉を晒してみりゅw
0430nobodyさん
04/08/09 18:15ID:???0431nobodyさん
04/08/13 16:34ID:???0432nobodyさん
04/09/01 16:13ID:DiPaFBrX0433nobodyさん
04/09/02 00:30ID:???0435nobodyさん
04/09/11 11:24:55ID:vqhAT/1H表示を変えて使う場合、smartyのキャッシュ機能が問題起こす可能性はあるでしょうか?
誰かがログインした状態がキャッシュされてしまって
ログインしていない人にそのページが見えちゃうとか。
0436nobodyさん
04/09/11 12:35:32ID:???0437nobodyさん
04/09/11 18:28:06ID:K5FwXM+0キャッシュ、意外と使えなかった・・・。
テンプレートにアサインした結果をキャッシュするから、
テンプレートが同一なら問題起こる可能性あり。
>>436
どんな式?
0438nobodyさん
04/09/12 01:33:02ID:???php使った動的ページで、しかもログインページなんて
ブラウザのキャッシュすら一応Metaタグとかで無効にしといた方が良い気がするが。
テンプレートエンジンのオーバーヘッドが気になるのなら
それこそ、動的な出力とインクルードしたテンプレートから生成された出力結果を
ファイルに書き出して静的htmlファイルを公開フォルダに置いた方が
良いだろうし。
0439nobodyさん
04/09/12 02:45:25ID:JBS0QrEFキャッシュIDをうまく使ってやれば平気。
>>438
テンプレートエンジンより、assignする値をDBなんかから持ってきてるときにオーバーヘッドがでる。
0440nobodyさん
04/09/12 04:22:23ID:???PHP自体で十分デザインとテンプレートの分離はできるし、
キャッシュ機能つくるのも特に大して手間じゃないし…
0443nobodyさん
04/09/12 05:18:14ID:???ワラッタw
0444nobodyさん
04/09/12 06:21:43ID:?????そりゃDBだろうがlogファイルからだろうが、演算結果だろうが
動的に出力する値は全部オーバーヘッドになるだろうさ。
Smartyのキャッシュ機能とはまるで関係ないのでは?
そこが気になるならWebアプリ自体使えないと思うが。
0448nobodyさん
04/09/12 08:27:29ID:7xfelydBエラーを吐くようになったのですが・・・。
これってどうしようもないですか?
ひょっとして、テンプレートファイルのなかで
{php}
ほげほげ
{/php}
を数カ所使ってるのがいけないのでしょうか・・・
0449nobodyさん
04/09/12 13:42:47ID:???いや、デザイナの為ならなおさらSmarty使わないほうがいいだろw
DWとかはPHPタグで囲んだ部分は表示されないようになってるし
0451nobodyさん
04/09/12 15:31:00ID:???すいません、同時にPHPを5.0.1にあげたんですが、4.3.8に戻して、
smartyのキャッシュを有効にしても、全然問題なかったです。
PHP5.0.1のせいだったみたいです。どうもすみません。
//しかしPHP5のSOAP使いたい・・・
0452436
04/09/13 00:26:30ID:???遅レスすまんす。
普通に{$hoge+100}とかです。
本家のフォーラム見たら同じ問題が出ていて、CSV版では問題ないよ。って書いてあった。
めんどいから2.6.3に戻しましたけど。
0453nobodyさん
04/09/13 02:45:25ID:???オーサリングツール使ってhtmlファイルだけ渡して後は知らねぇってデザイナと、
デザイン上の修正の度にプログラマにも修正依頼しなきゃいけない様な
状況でしか仕事したことないなら、その環境は恥じた方がいいよ。
0454nobodyさん
04/09/13 10:46:56ID:???勝手に勘違いして人の仕事環境妄想して、妄想で創った人物像相手に
レスする癖は恥じた方がいいよ?
例えばSmartyのforeach文が修正できてphpのそれが修正できないなんて奴いねぇだろw
対応エディタもマニュアルも多い分Smarty使うよりPHPタグで分けた方がデザイナ的にも
やりやすいってだけの話なんだけど?
0455nobodyさん
04/09/13 11:07:47ID:???0456nobodyさん
04/09/13 11:46:10ID:u+cNXRvaSmarty用のDWプラグインがあるよ。
0458nobodyさん
04/09/13 12:02:37ID:???0459nobodyさん
04/09/13 13:27:37ID:???変なとこでSmartyタグ扱いされちゃう。
0461nobodyさん
04/09/13 17:27:51ID:E8MZljJ1結構困るよな。パーサをマルチバイト対応させる必要があるよな。
あー。まだ見てますかね。
謎エラーはSmartyが原因ではなくてPHP本体が原因。
--enable-zend-multibyteつけてmakeしてませんか?
4.3.8以降/5.0.0β3以降あたりから出る模様です。
0464451
04/09/14 10:32:41ID:???>--enable-zend-multibyteつけてmakeしてませんか?
ビンゴです。
つけないで、5.0.1入れてみます!
ありがとうございます。
0466nobodyさん
04/09/15 16:10:31ID:sZX1kIS00468nobodyさん
04/09/15 18:59:41ID:???0469nobodyさん
04/09/15 19:07:40ID:???大丈夫ですよー。
内部エンコードこそ EUC とかで書きつつ
mbstring.http_output の値を SJIS にしちゃえば OK です (´ω`)
0470nobodyさん
04/09/15 20:41:54ID:dqyUiMN9それやんないと能とか条が化けるんだよな。
0471nobodyさん
04/09/15 22:01:32ID:???普通にSJISで問題ないよ
>469
EUCにしちゃうと絵文字のバイナリでの入力ができなくなるから使いづらい。
>470
どんな使い方してるんだ?
0472nobodyさん
04/09/15 22:21:33ID:C49Dq6Pt>>470ではないけどテンプレート中の文字が化けるっしょ?
--enable-zend-multibyteを付けてビルドして、mbstring.script_encoding=SJISを設定してれば
SJISをちゃんと扱えるようになるけど、パフォーマンスが落ちるし。
絵文字は確かに扱いづらくなりますな。
キャリア間の非互換やPCでの表示もあるから、絵文字はプレースホルダを
端末に応じて置換してテンプレートに渡してるんだろうけど、
assignの段階では置換せずにoubput_handlerに
SJISへの変換と絵文字プレースホルダの置換をする関数を指定すればいいんじゃないかな。
まさかユーザーから入力された絵文字を生のままログに保存してたりしないよね?
0473nobodyさん
04/09/15 22:50:59ID:???どれも入門ばっか・・・
0474nobodyさん
04/09/15 23:02:47ID:???471ですが、鯖の設定は他人任せだからよーわからんです。
夜間だと秒間8〜12アクセスある携帯サイト運営してて
体感的に遅くなったことはないです。
携帯相手だから速度は気にする必要ないのかもしれんが。
絵文字とhdmlはoutputfilterで自動変換させてる。
PCは絵文字画像ね。
ユーザーの絵文字はiモードの絵文字(バイナリ)にしてから
mysqlに入れてるけど何か問題ありますか?
ちょっと前まではbase64_encodeしてから入れてましたが
面倒なのと問題がないのとでそのまま入れてます。
単純にわからないので教えてください。
教えて君でスマン。
0475nobodyさん
04/09/16 03:23:52ID:???なるほど。納得。
iモードのやつに統一してあるならOKっす。
>>472の意図はDoCoMo/au/Vodafoneで別々の絵文字を
そのまま扱ってたらアレだなあと思ったので。
満足なパフォーマンスが出てるなら気にすることもないです。
それ以前にmbstring.scriptl_encodingは未設定で、
たまたまうまく動いている可能性が高いですが。
0476nobodyさん
04/09/16 05:22:54ID:???今のとこ携帯サイトの仕事は無いんだが・・・
0478nobodyさん
04/09/18 17:46:27ID:???なんかセキュリティーホールがあるのかと思ってすごいビビってましたよ。
絵文字は各機種ごとにそのまま保存してても
問題ないと思いますね。ようはユーザーに対しそれをどう扱うかだし。
うちはiモード重視だからi基準にしちゃってますが。
mbstring.script_encodingは未設定ぽかった。
試しにaaacafeとc-sideで試したらOKでした。
>>477
かなり泣けるよね。
特にEZ端末で同じ会社の端末でも挙動が違ったり
locationが使えなかったりとかもろもろと・・・。
0479nobodyさん
04/09/18 18:47:21ID:???泣ける
0481nobodyさん
04/09/19 19:04:37ID:???0482nobodyさん
04/09/19 19:10:05ID:???0483nobodyさん
04/09/19 20:18:01ID:???0484nobodyさん
04/09/19 21:45:49ID:???0485nobodyさん
04/09/22 01:32:35ID:???0486nobodyさん
04/09/22 02:08:38ID:???0487nobodyさん
04/09/22 20:46:22ID:S3VBXifEoutput_buffering = On
output_handler = mb_output_handler
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
で
$buffer_euc = $smarty->fetch('index_m.tpl',$smarty_cache_id);
$buffer_sjis = mb_convert_encoding($buffer_euc,"SJIS");
//---------------------------------------------------------------------------
header( 'Content-Type: application/xhtml+xml; charset=Shift_JIS' );
header( 'Content-Length: ' . strlen( $buffer_sjis ) );
//--------------------------------------------------------------------------
$smarty->display('index_m.tpl',$smarty_cache_id);
としてるのに、出力がEUCになってしまいます。
どんな原因が考えられるのでしょうか?
0488nobodyさん
04/09/22 22:03:51ID:???0489nobodyさん
04/09/22 22:05:55ID:???・$buffer_euc, $buffer_sjis等の出力の文字コードをチェックするなりして、問題を絞り込む
・キャッシュが更新されずに古いものが使用されてないか?
0490nobodyさん
04/09/22 23:09:16ID:???>>488が泣いたのはそんな理由じゃないと思うよ。
まずoutput_buffrering不要。
一応mb_convert_encodingの第三引数に"EUC-JP"を入れといた方が無難。
極め付けに痛いのが $smarty->display('index_m.tpl',$smarty_cache_id);
echo $buffer_sjis; でええんちゃうかと。
0491487
04/09/23 11:59:14ID:???すいません、情報不足で。PHP5.0.1です。
キャッシュは、全部けしてもおなじ状況でした。
で、まさかと思って調べてなかったのですが、
$buffer_euc = $smarty->fetch('index_m.tpl',$smarty_cache_id);
のちの$buffer_eucは空でした。
なので文字コードは、$buffer_euc、$buffer_sjisともに空で、
ただし、
$smarty->display('index_m.tpl',$smarty_cache_id);
はなぜか(EUCで)表示できてます・・・。
>>490
echo $buffer_sjis; でええんちゃうかと。
いや、どうしても重くならざるをえないページなので、
キャッシュをつかいたかったもので。
やはりPHP5.0.1というのが相性悪いのでしょうか?
ただ、スクリプトの他の部分では、$smarty->display成功してるんですよね。(ちゃんとSJIS)
変数やファイル名が違うだけで、そこといっしょのことをしてるはずなんですが・・・
0492nobodyさん
04/09/23 12:05:14ID:???意図したコードと違うことが書いてある気がする。もういちどよく見直せ。
適切なタイミングでnew Smarty()してないとかw
んで、>490ではないが、featchの内容とdisplayの内容が同一で、
SJISに変換したものが$buffer_sjisに入ってるなら、それを出力してやったほうが処理は早いぞ。
0494487
04/09/26 01:42:15ID:ORPXRj+Iとりあえず文字化けは「解決」しました。というか、あきらめました。
application/xhtml+xml;をあきらめて、"Content-type: text/html";にしたら、
文字化けしないようになりました・・・
ただ、別の問題が生じてます。
>>487のソースで、
HTTPヘッダが「Content-Length: -」となってしまいます。
どうにかして、smartyを使いつつ、「Content-Length」を正常に表示させる方法とかないでしょうか?
ob_関係の関数使おうかと思ったのですが(ob_get_lengthとか)
「smarty->display」でブラウザに表示されるときはSJISですが、
その直前まではEUCなので、文字数がずれてしまいます・・・
どなたか裏技っぽい方法でもいいので、お助けいただければ幸いです。
0495あぼーん
NGNG$smarty->fetch()で表示内容取得して
文字コード変換かけてstrlenで測るとか?
・・・かなりダメそうな方法だ(苦笑
0498487
04/09/28 11:55:20ID:???いや、それ、>>487でやってます。(content typeは違うけど)
そしたら、「Content-Length: -」となってしまうので。。
0502nobodyさん
04/10/11 16:58:02ID:RLUAfbkL0503nobodyさん
04/10/11 18:13:33ID:???どうせフレームワーク組んじゃうんだろ?
んじゃpattemplateのほうがシンプルで扱いやすいだろ。
smartyはあくまで、いろいろ自分で組めない厨向けのテンプレだぞ。
0505nobodyさん
04/10/12 14:58:47ID:???まず出来上がりの早さを求めるのであって
自分で出来るか出来ないかの問題ではない
そこから、どう不都合になるか考える。
出来てから考える。
誰でも自分で作れるよ。でも1年かかります。そんなの待てるか。
といわれちゃうよ
0506nobodyさん
04/10/12 16:27:47ID:bb34UBPSまあ、それをいうならPHPはあくまで、いろいろ自分で勉強できない厨向けの環境だからな。
0507nobodyさん
04/10/12 16:42:18ID:???0508nobodyさん
04/10/12 17:24:13ID:bb34UBPSあと、なんかCPANみたいなのやるっていう話なかった?
0509nobodyさん
04/10/12 19:39:43ID:???0510nobodyさん
04/10/16 23:33:47ID:OMhy7HMxインストールすら出来ない(´・ω・`)
初めのHello!,Ned1が出ないし
きちんとinclude_pathを設定して...Example 2-9でエラー
unexpected T_STRING in c:\〜 in 20
はて、config_dirのパスが設定出来ないらしい
Windowsの絶対パスはc\:からだよね?
0511nobodyさん
04/10/17 05:34:27ID:???・ 相対パスを使ってみる
0512511
04/10/17 05:35:51ID:???>(´・ω・`)
0513nobodyさん
04/10/17 07:09:37ID:???0514nobodyさん
04/10/17 17:17:49ID:???もしくは某板の糞コテ
0515nobodyさん
04/10/17 18:11:08ID:???0516nobodyさん
04/10/17 18:18:34ID:???0517nobodyさん
04/10/17 21:08:07ID:2DZWHiAEやはりC:/〜でした。
0518nobodyさん
04/10/27 11:44:54ID:5LD6Mw3otemplates_cそのものも削除できない。
なぜかな?
0519nobodyさん
04/10/27 12:38:36ID:???0520nobodyさん
04/11/09 09:28:23ID:RHwN8VlWオープンソースに興味がある人とか参加してみたら?
--------------------------
【2ちゃんブログ】次世代開発中心 Part2@ブログ
http://pc5.2ch.net/test/read.cgi/blog/1092616279/l50
391 名前:忍ロボ ◆O6dempau.2 本日のレス 投稿日:04/11/09 01:48:13 GsdPVZqn
ちゃぶだい
開発に参加してくれる人募集します〜
・開発者さん(PHPで開発できるひと)
・デザイナーさん(デザインテンプレート作成)
こちらのメールフォームから連絡よろしくですー
↓
http://chbox.com/mail/
■ハンドルネーム
■連絡先メールアドレス(フリーメール不可)
■ホームページ/weblog URL
■(開発者? / デザイナー? / その他)
■連絡事項(あれば)
0521matsumoto
04/11/10 22:33:26ID:6T9+fSCpArrayと出力されてしまうけれど、これを 表示しないようにする簡単な方法はないのでしょうか。
0522nobodyさん
04/11/11 00:19:20ID:???それは、
テンプレートで参照してるけど、
assignしていない場合に、Arrayと出力されていて、
その現象を回避したいってこと?
0523nobodyさん
04/11/11 01:14:01ID:???0524matsumoto
04/11/11 02:52:04ID:IGJG68qY{$aaa} -- {$bbb}
■PHPプログラム
$smarty->assign("bbb" , "BBB");
// $aaaについてはassignしない
■出力
Array -- BBB
となってしまいます。わたしだけでしょうか?
他の方はなりませんか?
0525matsumoto
04/11/11 02:55:24ID:IGJG68qY524の場合で、こうなってほしい。
PHPプログラムは同じ。
■テンプレート
{$aaa}--{$bbb}
{if $aaa}{$bbb}{/if}
■出力
--{$bbb}
こうなってほしいのですけれど。
つまり、単独では空文字になって、ifで使用した場合にはFALSEの扱いになるような...
0526matsumoto
04/11/11 02:56:49ID:IGJG68qY■出力
--BBB
です。
0527nobodyさん
04/11/11 11:07:43ID:???にしてみ。
絶対、他の値が入ってる。
0529nobodyさん
04/12/08 01:12:49ID:???源流ってどのへんになるんだろ?
0530aya
04/12/09 17:20:27ID:hK+hWFtHまずダウンロードしたSmarty-2.6.6.tar.gzを解凍し、その中のlibsの中身
を、
c:\php\smarty というフォルダを作ってコピーし、
C:\WINNT\のphp.iniのinclude_pathを下記のように変更しました。
// 変更前(既に入れたpearのパス)
include_path=".;C:\php\pear;c:/php/includes;c:/php/pear"
// 変更後(smartyへのPATH)
include_path=".;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty
"
これで、smarty/demo/index.php(SMARTYのテストプログラム)にアクセスすると
、
---------------------------------------------------------------
Warning: main(Smarty.class.php): failed to open stream: No such file or directory in c:\inetpub\wwwroot\nyuukin\demo\index.php on line 4
Fatal error: main(): Failed opening required 'Smarty.class.php' (include_path='.;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty') in c:\inetpub\wwwroot\nyuukin\demo\index.php on line 4
---------------------------------------------------------------
のエラーが出てしまいます。 smartyへのpathを通すのにはどうすればいいんでしょう?
不躾ですみません。
0531nobodyさん
04/12/10 04:49:38ID:gB4mZSIsと出てますが・・・ちゃんとある?
0532nobodyさん
04/12/10 10:44:56ID:???0533aya
04/12/10 10:58:34ID:f65efB7Jそうなんですよね。ちゃんと設定したはずなんですが、pathが
通っていないんです。
既に稼動しているPEARのライブラリのパスは
include_path='.;C:\php\pear;c:/php/includes;c:/php/pear'で
pear配下のファイルがincludeできるのですが、
(include_path='.;C:\php\pear;c:/php/includes;c:/php/pear;c:/php/smarty'
として、
c:/php/smarty/Smarty.class.php
にアクセスするとエラーになってしまうんです。
include_pathは、ウィンドウズのシステム環境変数のPATH設定と
同じ感覚でセットアップしているのですが・・
どうしてなんだろう?
0534532
04/12/10 11:14:16ID:???せっかく返事したんだから読めよ。
require_once('libs/Smarty.class.php');
でいけるんじゃねーか。
いけなかったら、libsにパス通せ。
0535aya
04/12/10 12:22:05ID:f65efB7Jごめんなさい。間違えました。533スレッドは、
>>533さんへのレスポンスでした。しっかり読みました。
要は、解凍したlibの中身を、smarty直下に移動したわけだから、
c:/php/smarty'
とinclude_pathを追加したんです。
0536532
04/12/10 20:07:24ID:???ひとまず\で統一してみれば?
0537aya
04/12/11 13:42:57ID:Jq/LlFplそうなんです。
ディレクトリセパレータを(/),もしくは(\)に統一して実行してみたの
ですが、PEARは正常に稼動し、SMARTYは相変わらずPATHが通っていない
状況が続いています。
0538nobodyさん
04/12/11 21:58:48ID:???だいたいPath通す必要性ないよ。
0539nobodyさん
04/12/12 17:33:42ID:???Smarty-2.6.6\demo\index.php
> require '../libs/Smarty.class.php';
なわけだが。
0540nobodyさん
04/12/13 17:56:41ID:???どうやら>>537はlibsの中身だけを
c:\php\smarty\ に置いてるらしいぞ。
今まで読んだ感じだと。
0541nobodyさん
04/12/13 22:35:43ID:???0542nobodyさん
04/12/16 17:12:21ID:RdrCSV2b{$DATA.$key}
こんな指定の仕方がしたいんですが…
0543nobodyさん
04/12/16 22:21:21ID:???mk:@MSITStore:c:\php\HtmlHelp\php_manual_ja.chm::/ja/language.types.array.html
0547nobodyさん
04/12/17 11:34:54ID:???{$DATA.$key}
これでできるでしょ…。試してないの?
{$DATA[$key]}
でもできるみたいだけど。
0548nobodyさん
04/12/19 11:34:13ID:???こんなもんなんでしょうか?
そのうちなれるのかな。
ほかのテンプレートはどうなんすか?
0550nobodyさん
04/12/19 15:48:21ID:???0553nobodyさん
04/12/19 21:03:08ID:???0554nobodyさん
04/12/19 21:12:51ID:???0556nobodyさん
04/12/19 23:38:58ID:???0559nobodyさん
04/12/21 12:33:51ID:???0560nobodyさん
04/12/21 13:46:25ID:t6MkBwt30561559
04/12/21 13:49:27ID:???しかもSmartyとの連携も怪しくなってきたりして。
0563nobodyさん
04/12/23 06:26:50ID:???0564nobodyさん
04/12/27 15:43:31ID:???・・・情報が少なすぎる。
0565nobodyさん
05/01/03 00:08:40ID:???while($row = mysql_fetch_array($left)) {
print("[".$row["month"]."/".$row["day"].]");
}
こんな感じのをSmarty化できずに困っています。
{foreach}{/foreach}などを使ってやるようなことは解ったのですが、
key とか name などの使い方が解りません。どなたか教えてください。
0566nobodyさん
05/01/03 00:32:46ID:wnsIsqHmそんな単純なコードをいじったところで変わりぁせん
0567nobodyさん
05/01/03 20:57:14ID:???こんな感じか。
PHPのコード
$rows = array();
while ($row = mysql_fetch_array($left)) {
$rows[] = $row;
}
$smarty->assign('rows', $rows);
テンプレート
{foreach from=$rows item=row}
[{$row.month}/{$row.day}]
{/foreach}
Smartyマニュアルの「第4章 変数」の「phpから割り当てられた変数」のあたりを
読むといいよ。
0568nobody& ◆vGPd8m6uvw
05/01/03 21:01:00ID:???感謝です。
>Smartyマニュアルの「第4章 変数」の「phpから割り当てられた変数」のあたりを
>読むといいよ。
是非読ましていただきます。
0569nobodyさん
05/01/04 23:38:34ID:???使うことは罪に当たります。
0570569
05/01/04 23:39:24ID:???こんなくだらないものだった。
もう少し考えてから書けば良かったのに俺。
0571nobodyさん
05/01/06 13:52:57ID:???0572nobodyさん
05/01/06 18:12:11ID:DWsuB/B6onclickをつけてjavascriptを呼び出したいんですが、
何か良い方法ないですかね
0573nobodyさん
05/01/06 18:23:57ID:???メールのテンプレートに使おうとするとたいへん。
IF文をうまく書かないと
改行がへんなとこで入ったり、改行しなかったりして
結果、テンプレートが見にくくなる。
うまい方法ないかなー?
>>572
適当に html_options2 とか作って
パラメータを増やす
0574nobody& ◆k0eA9hHNm2
05/01/07 00:04:35ID:???自動リンクさせるためにregex_replaceを追加したのですが、エラーが起きてしまいます。
ソース:{$row.comment|regex_replace:"(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
どうすればいいですか?
0576nobody& ◆QWv3R1XL8M
05/01/07 00:17:18ID:???Warning: Unknown modifier '(' in ちょめちょめ on line 24
と出てします
0581nobodyさん
05/01/07 01:49:23ID:???'/' 3つをエスケープしてないじゃないか。
0582574=580
05/01/07 02:07:47ID:???ソース:{$row.comment|regex_replace:"(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,! #~*/:@&=_-]+)":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
を
{$row.comment|regex_replace:"'(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,! #~*/:@&=_-]+)'":" <a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"}
に変えると正しく作動するようになりました。
0583nobodyさん
05/01/07 02:12:01ID:???http://www.ironhearts.com/diary/archives/000365.html
0584574=580=582
05/01/07 02:14:27ID:???まさにそれです。そのとうりです。
0585nobodyさん
05/01/07 10:29:27ID:???そんなのテンプレートに書くの?
modifierプラグイン書いたほうがいいよ
0587nobodyさん
05/01/14 00:43:42ID:???たとえばレンタルサーバにSmarty置いて動作させたりは可能なんでしょうか・・。
0590nobodyさん
05/01/14 09:42:08ID:???0591nobodyさん
05/01/14 20:49:49ID:???0592nobodyさん
05/01/18 16:40:18ID:GbvmkgfT・・・と書き込んでおこう
0593nobodyさん
05/01/18 20:43:29ID:???なぜ最初に試さないんだろう・・・
0594nobodyさん
05/01/20 08:23:23ID:???0595nobodyさん
05/01/20 10:25:20ID:???聞く 非同期型処理
0596nobodyさん
05/01/20 14:29:42ID:???聞く 人に頼む
0597nobodyさん
05/01/20 15:58:23ID:???聞く まだ環境が用意できていない
0598nobodyさん
05/01/21 00:30:18ID:Q7KPWxeo・2
・3
・4
・5
・6
・7
・8
ttp://www.skullysoft.com/soft/ssc-board/bbs/main/c-board.cgi?id=cboard
このようなツリー型の掲示板に代表されるような木をSmartyで表示したいと思っています。
foreachやsectionでは決まった深さであれば入れ子にして表示することができるのですが
例えば2階層なら
{foreach .....}
・根
{foreach .....}
・葉
{/foreach}
{/foreach}
のようにして表示できるのですが、実行時に深さが決まる場合はどのようにすればよろしいのでしょうか?
ご存知の方がいらっしゃいましたらよろしくお願い致します。
0599nobodyさん
05/01/21 00:43:39ID:???{foreach .....}
・根
{foreach .....}
・葉
{foreach .....}
・葉
....
{/foreach}
{/foreach}
{/foreach}
0601nobodyさん
05/01/21 01:46:56ID:???最近この手のツリー式BBS作ったけどツリー作る所まではロジック側でやったよ。
表示順とインデントまで作ってSmartyの方では単純なループで表示させるだけって感じで。
0602nobodyさん
05/01/21 03:01:42ID:???ありがとうございます
この方法で試してみたところ上手くいきました
(key val)が1つの葉で多分木の状態になっています
- base.html
<ul>
{include file="incl.html" root=$root}
</ul>
- incl.html
{if isset($root.key)}
<ul>
{foreach from=$root item=node}
{include file="incl.html" root=$node}
{/foreach}
</ul>
{else}
<li>{$root.key} - {$root.val}</li>
{/if}
>>601
確かにそちらの方がよさそうですね
恥ずかしながら上のを作っているときに無限ループにはまってしまって
デザイナーがやる仕事ではないと思いましたorz
issetを持ち出している所も、ほとんどPHPのプログラムになっていますし
ただ、予め作ってしまうと上で上げた単純な<ul>を使った方法や
ttp://www.skullysoft.com/soft/ssc-board/bbs/main/c-board.cgi?id=cboard
のようにしたいという場合にテンプレート側のみで出来なくなってしまうので非常に悩んでいます
0603nobodyさん
05/01/21 17:13:04ID:???ざっとマニュアル見てみたのですがそのような関数は無いみたいでした。
自分でソースを編集しないとダメなのかな・・(´・ω・`)
0604nobodyさん
05/01/21 17:20:08ID:???0605nobodyさん
05/01/21 17:20:23ID:???ob_start();
$smarty->display();
$result = ob_get_contents();
ob_end_clean();
// あとはお好きなように
0608nobodyさん
05/01/21 19:47:12ID:???データにインデント数(何番目の階層か)まで持たせれば、
<ul>だの<li>だののループでどうにかなるんじゃないの?
0611598
05/01/21 23:54:03ID:???私もそれを考えてみたのですが、どう実装すれば良いか分からず
そこでblockプラグインを作成しようと思ったのですが、blockの内部の変数は
既に変換済みで渡されるということなので、どうすればforeachみたいな事を
できるのかマニュアルと格闘していたのですが解決できそうな方法がありませんでした。
やはりテンプレート上のみで解決するには上で解決したような例でinclude再帰か
foreachの実装みたいなものをSmarty側で新たに組み込むかなど
上手い方法がなかなか思いつきませんorz
0612598
05/01/21 23:57:53ID:???Smartyの構文で渡すのではなく、特殊な文法でいくという感じでした
{html_tree ......}
this is [[node]]
{/html_tree}
これならpreg_replaceしながらでいけるのですが、新しい文法を作り出さないで
上手くいく方法がないか模索しています
0613nobodyさん
05/01/25 17:14:22ID:ShBI8nKKsetActionオブジェクトのメソッドにアクセスしようとしたところ、syntax error: unrecognizedが発生してしまいました。
参照オブジェクトからのメソッドはコールできないんでしょうか?
0614nobodyさん
05/01/26 19:05:19ID:???呼び出せます。
以下を読んでみて。
http://sunset.freespace.jp/smarty/SmartyManual_2-6-6J_html/advanced.features.html#advanced.features.objects
0615614
05/01/26 19:06:32ID:???テンプレートの中でメソッドコールのチェーンはできないと思います。
0616nobodyさん
05/01/26 23:31:40ID:???0617nobodyさん
05/01/27 01:01:07ID:???0618nobodyさん
05/01/27 18:57:53ID:???Shift-JISで書いたテンプレートに「施」の文字を入れると、
以降の一部が化けてコンパイルエラーになります。
Smarty単独でも起きたのでMojaviは関係ないようですが。
適当なテンプレートに「実施キャンペーン」と入れた結果:
Fatal error: Smarty error: [in hoge.html line 165]: syntax error: unrecognized tag: キャンペーン {$hoge|default:0 (Smarty_Compiler.class.php, line 417) in /usr/local/apache/mojavi/opt/smarty/Smarty.class.php on line 1088
0619618
05/01/27 18:59:13ID:???スクリプトから直接echo()した場合や、
フォームからDBへの入出力等だと化けは発生してません。
0623nobodyさん
05/01/28 05:06:57ID:???0624nobodyさん
05/01/28 06:48:39ID:???同じようなことで悩んでいるのですが、この例でassignしてある$rootの
配列の構造がどうなってるのか教えていただけないでしょうか…。
0625nobodyさん
05/01/30 10:13:27ID:???ちょっといい例が思いつきませんが例えば下のツリーの関係なら
・あ
・赤
・ポスト
・雨
・か
・亀
こんな感じの配列です
(
(あ
(赤
(ポスト)
雨
)
)
(か
(亀)
)
)
0626624
05/02/01 00:46:14ID:???なるほど、理解できました。サンクスです。
自分でも調べてみました。
Pear::TreeやPear::DB_NestedSet(初めて知った)を使う、という手もあるみたいです。
ttp://www.codecomments.com/archive224-2004-3-151787.html
0627nobodyさん
05/02/02 03:50:11ID:???「どれか1つが記入されていたらOK」というRuleは
どうやって設定すればいいでしょうか。
いまtextフォームが4つあるんですが、
単純にrequireにしただけだと空欄が認められないし、
何も設定しないと入力チェック自体が出来ないという状態に。
0628nobodyさん
05/02/02 09:00:55ID:???addFormRuleでいいんじゃない?
http://hatotech.org/kumatch/archives/000331.html ここのPDFに
簡単に使い方が書いてあるよ。
0630nobodyさん
05/02/03 12:42:41ID:???%%11^111^111BD1DF%%debug.tpl.php
のようなファイルができてしまい、アクセスできません。
どうしたら、正常なファイル名のファイルが作成されるのでしょうか?
Apache2
PHP5.0.1
を使ってます。
0632nobodyさん
05/02/03 18:51:23ID:???レスありがとうございます。
ですが、
Warning: Smarty::fetch(templates_c\%%11^111^111BD1DF%%debug.tpl.php)
[function.fetch]: failed to open stream: No such file or directory in Smarty.class.php on line 1252
というエラーを吐いて進んでくれないんです。
ファイルは確実に存在しているんですが……
ちなみにDemoフォルダ内を動かしています。
0634627
05/02/04 19:35:24ID:???0635nobodyさん
05/02/04 20:51:56ID:???別に誤爆ってほどでもないかと。
Smarty+HTML_QuickFormは定番だしね。
ちなみに俺はデザインも自分でやってるので、
そういう場合は、JavaScriptをテンプレートに直書きしてる。
分離が出来てなくてダメな事はわかってるけどね・・・。
0637nobodyさん
05/02/28 10:40:41ID:???全く同じエラーがでて悩んでたんですが、私の場合は>>636さんのご指摘通りでした。
IISで動かしてたので環境は違うのですが、
wwwroot->プロパティ->セキュリティ->Everyoneで書き込みを許可したら動きました。
Smartyのcore_write_file.phpで@renameになっており、
ここでのエラーが出力されないため、解りにくかったです。
0638nobodyさん
05/02/28 12:50:49ID:???セキュリティの問題があるかもしれないので
wwwrootではなくtemplates_cを書き込みを許可するようにした。
0639nobodyさん
05/03/05 18:32:35ID:???はじめにマニュアルを読んでから動かせば @renameとか関係ないんで。
自分の落ち度を他人のせいにするもんじゃない。
0640nobodyさん
05/03/05 19:51:23ID:???0641nobodyさん
05/03/08 16:14:48ID:AAd9Sq9Q購入したPHPのサンプル本で、希望する動きのがあったので
使用しようと思ったのですが、Smartyを使って紹介されていたんです。
Smartyで書かれている部分を、PHPに直すような高度な事も
出来ないので、大人しくSmartyをインストールしようとしてみた
のですが・・・。
書籍のCDROMに入っていたWindows用のSmartyが
Smarty-2.6.6tar.gzで、解凍しようとしても出来ないのです。
インストール方法を探してttp://sunset.freespace.jp/smarty/の
サイトも何度も読んで見たのですが、『ディレクトリファイルに
インストールしてください』という下りから始まっていて、
ウィンドゥズ対応の圧縮ファイル名などの記述すら見つけられなくて。
どなたか、Win用のインストール方法を詳しく教えて頂けない
でしょうか・・・。
お願い致します。
0642nobodyさん
05/03/08 16:20:35ID:???はい、こんにちは。
ttp://www.vector.co.jp/ に行き、キーワードの欄に「gz」と入力します。
検索ボタンを押すと結果一覧が表示されるのでお好みのソフトを選択しましょう。
0643nobodyさん
05/03/08 17:13:05ID:???0644641
05/03/08 17:34:59ID:AAd9Sq9Qぎゃー!出来ました。解凍、出来ました。
なんか、すごい恥ずかしい質問をしてしまった気がして
穴をほってでも入りたい気持ちでいっぱいです。
+Lahaで解凍できない=winファイルじゃない?
なんて思考回路になってしまった自分の馬鹿さ加減に
悲しくなりました。
ご指導、ありがとうございました。
今から設置に四苦八苦してまいります。
0645nobodyさん
05/03/08 18:36:24ID:???0646641_| ̄|○
05/03/08 21:33:23ID:AAd9Sq9Qインストール先がわからないです・・。
解説サイトさんによると
ディストリビューションの/libs/ディレクトリにSmartyライブラリファイル
をインストールして下さい
とあるのですが、ディストリビュージョンって何ですか・・?
検索してみたのですが、Linuxの・・というのばかりが
引っかかってきて、打ちひしがれるばかりです。
どなたか合いの手をお願いいたします。
0647nobodyさん
05/03/08 22:05:41ID:???0650nobodyさん
05/03/09 01:27:21ID:???ハッキリ言ってその程度の知識でサーバ管理するのはとても危険。
ついでに、踏み台にされるとはた迷惑。
いや、公開サーバじゃなくてただPHPの勉強してるだけならいいんですがね。
0651641_| ̄|○いまだわからず・・・
05/03/09 04:43:26ID:???ご指導ありがとうございます。
適当な場所でインストールしてみたのですが、
なぜかMySQLの信号機が赤になってしまって
また打ちひしがれ中です_| ̄|○
PHPdevでSmarty使おうとしているのが悪いのかしら
とか思って検索中です。
>>650さん
まさか、ネット上で公開する気なんてまだまだ
先の先の事ですよぅ!
セキュリティの事もわからないのにっ。
一から色々と、勉強中なのです_| ̄|○
知らない事が多すぎて、覚える事ばかりで
沸騰しそうです。
踏み台にしているつもりは毛頭なかったです。
不愉快にさせてすみません・・・。
0652nobodyさん
05/03/09 09:02:15ID:???> Install the Smarty library files which are in the /libs/ directory of the distribution.
[日本語訳サイト]
> ディストリビューションの/libs/ディレクトリにSmartyライブラリファイルをインストールして下さい。
[正しかろう訳]
配布物の/libs/ディレクトリにあるSmartyライブラリファイルをインストールします
(ここでいう配布物ってのは、Smarty-2.6.6tar.gzを解凍した物の事)
0653nobodyさん
05/03/09 10:14:49ID:???踏み台ってのは、君がここの回答者を踏み台にして…って話じゃなくて、
セキュリティの甘いサーバをネット上に放っておくと、そのサーバを”踏み台”にして、
悪事に利用されるよ、そしてそれは万人にとって迷惑な話だよ。って意味だよ。
ぼちぼちで、やったんさい。
0654nobodyさん
05/03/09 10:41:51ID:???申し訳ないが前提となる知識が足りなすぎる。
足し算がわからない人に因数分解は無理。
書店で入門書を買ってきてコツコツやりな。
どうしてもわからないことは質問してもいいから。
だいたいディストリビューションっていう単語がわからなければ、
Googleで調べればすむ話でしょ?
自分で調べもしないのに聞くのはイクナイよ。
先は長いけどがんばれー。
0655nobodyさん
05/03/10 11:16:13ID:1EPX/SpTsmartyのifでの比較演算なんですが、
{if "1010010001000110000115" eq "1010010001000110000115"}equals{/if}
と
{if "1010010001000110000120" eq "1010010001000110000115"}equals{/if}
の両方とも、出力がequalsになるんですが、
何故なんでしょうか?
0657nobodyさん
05/03/10 11:43:54ID:???{strip}命令って無効になったのですか?
そのまま{strip}って表示されてしまうのですが・・・。
0658655
05/03/10 11:44:28ID:???いや、たまたまじゃない。
つか、すげぇ下らない理由だった。
当然、文字列同士で比較していると思っていたのだが、
数字だけで構成しているとどうやら数値として比較するらしい。
で、有効な桁数以上の文字はカットされてしまい、
(俺のトコだと整数で18桁がボーダーのようだが、環境によって変わるかも。)
前方18桁だけ取り出して、数値としてみれば
両辺一致しているのでtrueになるようだ。
末尾にcatで"a"なんてくっつけてやれば、
文字列同士として比較するため、何の問題もでない。
そんな事にも気づかなかった俺って・・・orz
0660nobodyさん
05/03/10 15:16:46ID:???0661nobodyさん
05/03/10 15:25:45ID:???0662nobodyさん
05/03/10 17:46:21ID:8Bnn/FyNカスタムタグ使ってると、そーなるバグ
smartyのフォーラムよく見ろ
0664nobodyさん
05/03/11 11:29:21ID:???if( 0 == "test") とか多分true
そういうときに if( 0 === "test") ってやるんだっけか
0665641
05/03/12 09:17:24ID:???何日もかけて今頃やっとかよっ!って感じなのですが・・_| ̄|○
ご指導してくださった皆様ありがとうございました。
0666641
05/03/12 11:31:22ID:Eai46BlS何度もすみません。
Smartyをインストールできたのがうれしくて、書籍の
サンプルをそのまま使って、ローカルでテストしてみたのですが、
Fatal error: Cannot redeclare loginfunction()
(previously declared in C:\Program Files\Apache Group
\Apache2\htdocs\samples\chap5\mng\auth.php:12)
というエラーが出てきてしまいます。
0667641 続きです
05/03/12 11:31:40ID:Eai46BlS起きているエラーだ、という所まで検討がついたのですが、
いかんせん、書籍に乗っているサンプルを何もいじっていない
コードなので、なにが悪いのか、わからないのです。
もしかして、知らない間に、どこかいじってしまったのかも、と
思って、再度CD−ROMから該当ファイルをインストールしてみたのですが
同様のエラーのままでした。
コードの該当部分は、下記になります。
<?php
require_once("DB.php");
require_once("Auth/Auth.php");
require_once("chap5/MySmarty.class.php");
$dsn="mysqli://php:php@localhost/sample";
$params=array(
"dsn" => $dsn,
"table" => "mng_usr",
"usernamecol" => "uid",
"passwordcol" => "passwd");
function loginFunction(){
$o_smarty=new MySmarty();
$o_smarty->display("login.tpl");
}
<略> ?>
どこが悪いのか、ご指導いただけないでしょうか・・・・。
よろしくお願いいたします。
0668nobodyさん
05/03/12 11:47:33ID:???smartyとはもう関係無い話だと思うのだが。。
loginfunctionが二重定義されているという事ならば、
本当にそうなっているのか、
DB.php、Auth/Auth.php、chap5/MySmarty.class.phpの中や、
さらにその中でrequireやincludeされているファイルを
検索して確かめたらいいのでは?
その上で、どのfunction loginFunctionを使うかはそれを作った人の意向によるかと。
0669641
05/03/12 12:31:08ID:???ご指摘ありがとうございます。
ファイル内を、検索して探してみます。
おっしゃる通り よく考えたら、確かにSmartyとは直接
関係なかったですね・・_| ̄|○
すれ汚し、大変失礼いたしました。
0670nobodyさん
05/03/13 19:08:22ID:8WQj/L10http://www.amazon.co.jp/exec/obidos/ASIN/4798108839
買おうか迷っているので感想キボンヌ
0672nobodyさん
05/03/13 19:27:34ID:???立ち読みで十分な希ガス
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:???いや、まぁ、デザイナと喧嘩してるんでもなきゃ別に問題ないんだけどね。
0773nobodyさん
2005/05/06(金) 00:49:55ID:???0774nobodyさん
2005/05/06(金) 01:25:35ID:???パラメータも渡せるし。
まあ本人が満足なら良いんだけど。
0776nobodyさん
2005/05/09(月) 10:21:54ID:Ogk2vGAk$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:???っていうかテンプレートにこんな変数書かなくてすむように
ロジックを工夫したほうがいいよ。
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} ではどう?
コンパイルファイルのコードを確認してみたらいいかも。
どうしてもテンプレートでやりたきゃ
{assign var="ccc" value=$aaa.111} とかなんとか。
0780nobodyさん
2005/05/10(火) 17:16:42ID:???0781nobodyさん
2005/05/10(火) 17:53:28ID:???これでも駄目でした。
>{assign var="ccc" value=$aaa.111} とかなんとか。
これも考えたのですがassign関数は$aaa.111を$aaa['111']とは見てくれず
「$aaa . ".111"」と解釈されてしまうみたなんです。
出来上がったキャッシュファイル、Smartyのソースを確認して検証してみます。
0782nobodyさん
2005/05/10(火) 18:19:28ID:???こんなこともわからんのか馬鹿どもめ!!!!!!!!
0783nobodyさん
2005/05/10(火) 18:53:40ID:???{$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:???しかし開発中のソースで試したところ、期待通りの動作をしませんでした。
原因を追ってみると数字と文字(配列と連想配列?)の場合で挙動が違うようでした。
・定義
$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:???[]のなかのインデックスは数字が変数じゃなければsection変数に変換されるね。
この挙動はこれでいいのかな?
確かに知らなきゃはまる。
0786nobodyさん
2005/05/13(金) 12:08:00ID:???テンプレートにロジックは多少なりとも入れてはいけないと
思うのだが、なんでSmartyなんてヘンテコな物が流行るのか?
HTML_Template_Sigma使えよお前ら。
0787nobodyさん
2005/05/13(金) 12:55:02ID:???もとデザイナーで今はプログラマーに転職した俺から言わせれば、
Smartyはデザイナーとの共同作業に向いてると思うぞ?
別にデザイナーにSmartyの形にしてもらう訳じゃない。
デザイナーには本当にデザインだけしてもらう。
レイアウトの関係上、ダミーでいいから勝手ににデータを固定で打ってもらう。
例えば、金額のところには、\999,999,999とか見たいな感じ。
そのデザインが出来上がったら、プログラマ側で、そのデータ固定になってた部分に
ロジックなりを書き込む。
此処で、デザインがちょっと・・・という事になっても、そのロジックが書いたままの
テンプレートをデザイナーに渡して修正してもらえば良い。
というのは、Smartyの記述がされていても、HTMLとして普通に開けて、
データ固定で売ってもらった所が変わってるだけだから、
デザインする上では何の支障も無い。
0788nobodyさん
2005/05/13(金) 16:21:59ID:???じゃあ、ロジックを入れたあとにデザインの修正が出た場合はどうする?
デザイナーが持ってるマスターのテンプレートを修正してもらって
その後ロジック入れなおしだ。Smartyという名前なのにスマートじゃないね。
大体テンプレートにロジックいれたらテンプレートの意味ないんだが。
テンプレートってのは純粋なHTMLであるべきで、テンプレートをブラウザで
見たらどのような物か分かるべきで、オーサリングツールで何の問題もなく
開くことができるべき。
0789nobodyさん
2005/05/13(金) 16:28:18ID:???ロジックって、ループとかその程度じゃないの?
表形式のデータの部分をループさせるとか。
それに、そういったロジック入れたままでもデザイン修正はできるよね。
ロジック入ったままのファイルをデザイナーに渡して、それを修正してもらえばいいんだし。
つうか、Smartyのロジックが掛かれてても、ブラウザで普通に見られるし、
何の問題も無いような・・・
Smarty使ったことないのかな・・・
0790nobodyさん
2005/05/13(金) 16:42:31ID:???0791nobodyさん
2005/05/13(金) 16:45:25ID:???テンプレートにロジックを入れると気持ち悪いという主張は理解出来る。
ただ、php 自体 html にロジックを埋め込むための言語として出来たもんだし、
そういう問題意識は php プログラマには希薄なんだよ。
0792nobodyさん
2005/05/13(金) 18:47:13ID:???PHPがリクエストに対する処理から吐き出しまでを行い、
処理データを取捨選択するのがsmartyという流れだと思えば良いんじゃない?
smartyは基本的に流れてるデータをキャッチするだけなんだしさ。
0793nobodyさん
2005/05/13(金) 19:40:27ID:???PHPコードにデザインが入っているのが「キモい」からだろ?
SmartyによってせっかくPHPコードからHTMLを分離したのに
HTML側にロジックが(多少なりとも)入ってしまったら
元の木阿弥だろっつーのよ。理解できんだろうなあんたらには。
0794nobodyさん
2005/05/13(金) 20:12:17ID:???言わんとしてることは分かるけど、その問題はSmarty独自の問題なのか?
それは使ってる人自体の使い方などが悪いとかそういう問題じゃないの?
0795nobodyさん
2005/05/13(金) 20:12:52ID:???>PHPでテンプレートエンジンが使われるようになったのは
>PHPコードにデザインが入っているのが「キモい」からだろ?
前提が間違っとる。
おれはSmartyってのはMVCのViewをデザイナに(半ばだまして)やらせて
プログラマが楽するものだと理解している。つまり、テンプレートエンジン
のなかで、ロジックが記述可能なものはそういう意図で作られているわけだ。
Viewの機能を受け持つ以上、あの程度のロジックは書けないと俺が困る。
0796nobodyさん
2005/05/13(金) 20:21:31ID:???じゃあどうやって可変長の配列をテンプレートで扱うのよ?
「ロジック」ったってPHPコードをベタ書きするわけじゃなし。
0797nobodyさん
2005/05/14(土) 00:24:43ID:???あんたと仕事をするデザイナーは余計なこと(Smartyの独自タグ)まで
覚えさせられて可哀相にな。プログラマが楽するためにデザイナーが
犠牲になるわけだ。つくづく自分勝手な考え方だな。
>>796
例えばHTML_Template_Sigmaでは、ループや分岐となる部分は
とりあえず<!-- BIGIN hoge -->と<!-- END hoge -->で囲むんだよ。
その囲んだ部分をどのように使おうと自由。
デザイナーはまったく変なロジックなど意識しなくて良いし、
何よりもただのコメントなので妥当なHTMLとなり、オーサリングツール
でも問題なく開けるし、ブラウザで開いてもどのようなテンプレートか
一目瞭然で分かる。
0798nobodyさん
2005/05/14(土) 01:09:26ID:???俺の関わったプロジェクトだと
・デザイナー:html/JSPによる値を画面に展開するロジック
・プログラマ:J2EE部分のビジネスロジック
だった。その程度のことが出来ないデザイナは要らないって。
ただ、これは社内のイントラの仕事だったので
デザインの比重が大きいものだと、本当に絵を描くだけ
アイコン作るだけのデザイン担当者も必要だと思う。
0799nobodyさん
2005/05/14(土) 03:14:15ID:???そういうプログラマよりの自分勝手な考えの奴が多いから
プログラマは性格が悪いなどのレッテルを貼られるんだよ。
ちょっとは人の身になって考えるということをしてみたら?
そりゃデザイナーでもJavaScriptだのJSPやSmartyなどの独自タグ
覚えようとする前向きな人もいるけど、やっぱりデザイナーの仕事は
純粋なデザインであってコーディングはプログラマの仕事だろ。
逆にプログラマはHTMLやCSSなどの知識はあって当たり前で、
俺はDreamweaverで雛形作って渡したりしてるけどね。
0801795
2005/05/14(土) 03:48:00ID:???でもさ、デザイナだってテーブルの行ごとに色分けしたくなったくらいで
プログラマの仕事が終わるのを待ってたら締め切りが守れないぜ。
けして意地悪からだけでデザイナの仕事を増やしている訳でなく、
そういったデザインよりのロジックはデザイナがやるのが良いという
局面もあるんじゃないかな。とくに細かい変更要請がクライアントから
頻繁に飛んでくるのにつきあわなきゃいけないとか言う場合には。
あと、BIGINじゃなくって、BEGINね。
Template_SigmaってなつかしのPHPLibのテンプレートみたいなのかな
あれには苦しめられた。
そういうpush型のテンプレートエンジンに興味があるならjavaだけどEnhydra
なんか面白いかもよ。機会があったら使ってみ。
0803nobodyさん
2005/05/14(土) 04:27:24ID:???>799はプログラマとしてデザ寄りの考え方だから自分勝手じゃない。
自分はデザ側だから、逆に>798にも激しく同意なんですけどね
0804nobodyさん
2005/05/14(土) 05:06:39ID:???flexy:foreach="foo,key,value" とか書けるけどこれはどう?
おいらは気に入ってます。
ただPEAR一家のみなさんはinclude_pathにあること前提で書かれてるから
Mojavi3と組み合わせると(回避する方法がないわけではないけど)autoload絡みでちと面倒。
0805nobodyさん
2005/05/14(土) 06:11:56ID:???ほんとに、デザイナーとして同意なのか?
俺は素人のお遊びサイト作るのに、Mojavi+Flexyで作ってるけど、以前と比べて、ずいぶん楽ちんになったぞ。
これ、プロ(金がらみ)の立場で見ると、制作にかかるコストが減るって事だろ。
そっちを優先しないで、デザイナーとかプログラマの職域がとか、言ってたんじゃ儲からんだろ。
0806nobodyさん
2005/05/14(土) 09:45:30ID:???Smartyと比べても余り変わらなくないか?
Smartyのループは{section ループの条件式}と{/section}で囲むだけ。
コメントにはならないが、普通にHTMLでは文字として表示されるだけ。
オーサリングツールだろうが問題無く開けるし、ブラウザでも問題無い。
それに、なんか話がおかしくなってないか?
ロジック云々言っていたのに、HTML_Template_Sigmaでロジックの話になってる。
結局、ロジック書くんじゃん。
最初はロジック書くのがどうたら言ってたのに・・・
0807nobodyさん
2005/05/14(土) 11:59:01ID:???797ではないし、Template_Sigmaは使った事ないんだけど、PHPLibの
テンプレートクラスと同じようなものだとしたら、テンプレートファイルには
基本的にブロックの開始/終了と変数のプレースホルダーしか書けない。
で、php側でブロックを繰り返したり、またはブロックの中身を読み込んで
適当に加工したり、あるいは完全に置き換えたりするわけ。
0808nobodyさん
2005/05/14(土) 12:16:28ID:???<!-- {section ループの条件式} -->
ループする内容
<!-- {/section} -->
0810nobodyさん
2005/05/14(土) 13:15:46ID:???必死すぎてキモイ
0811nobodyさん
2005/05/14(土) 13:32:06ID:???じゃんじゃん教えてくれ
0812nobodyさん
2005/05/14(土) 14:12:12ID:???まあ、でもなんだかんだ言っても一番広まってるってのは強みやね。
Flexyみたいに、デフォルトをHTMLエスケープありにしてほしいところだけど・・・。
0814nobodyさん
2005/05/14(土) 17:25:25ID:???やっぱりPEARが一番安心。
0816nobodyさん
2005/05/14(土) 21:08:32ID:???<div flexy:foreach="array,key,value">
ループする内容
</div>
というのもありですな。
0818nobodyさん
2005/05/14(土) 21:42:44ID:???elseが入ると無理っぽい。
だから事前に
if ($foo) {
$flexy->setData('foo', true);
$flexy->setData('_foo', false);
} else {
$flexy->setData('foo', false);
$flexy->setData('_foo', true);
}
として、テンプレートでは
<div flexy:if="foo">〜</div>
<div flexy:if="_foo">〜</div>
とやってる。
elseifとか複雑な分岐があるときも似たような感じで。
0819nobodyさん
2005/05/15(日) 04:10:00ID:???0821nobodyさん
2005/05/15(日) 13:05:08ID:???・独自タグによりロジックとデザインの分離ができていない。
・標準ライブラリではない。
0822nobodyさん
2005/05/15(日) 18:50:44ID:???0823nobodyさん
2005/05/15(日) 18:58:47ID:4RUI5R7m自作のシンプルのが一番使いやすいでしょ。
0825nobodyさん
2005/05/15(日) 20:18:52ID:???独自タグっていうのもJSPと同じ位置づけと考えれば納得できると思う。
上で書かれているようにMVCのViewな訳だし。あれはあれで需要があるのは理解出来る。
0826nobodyさん
2005/05/15(日) 21:39:42ID:???Smatyをシンプルに使えばいいんじゃないの?
でも、オレも
・拡張が容易
・キャッシュ処理
あたりが同等で使い勝手がいいのがあればそっちに移りたい。
0827nobodyさん
2005/05/15(日) 22:35:38ID:???0828nobodyさん
2005/05/16(月) 00:05:33ID:???0829nobodyさん
2005/05/17(火) 07:47:44ID:???0830nobodyさん
2005/05/21(土) 17:12:14ID:???0831nobodyさん
2005/05/21(土) 20:23:48ID:???0832nobodyさん
2005/05/21(土) 21:57:23ID:???速度が何か気になるんだよなァ
0833nobodyさん
2005/05/21(土) 22:11:55ID:???まぁ、ホントに smarty が悪いのか調べるのが先だろうけど。
0835nobodyさん
2005/05/22(日) 01:45:00ID:???なぜSmartyを使う奴が例外なく雑魚なのかを理論的に説明するのが先。
これが説明できない限り、>>834が自分自身で言っている『その程度の反論』になる。
つまり、>>834が雑魚となることを自分自身で宣言した。
という訳で、説明くださいw
0836nobodyさん
2005/05/22(日) 03:15:55ID:???デザインとロジックの分離ということについて
もう少ししっかりと考えてみたら?
そうすればSmartyが屑中の屑であることが
よく理解できると思うよ?
もし理解できないのであればお前のプログラミングセンスが
無いんだろうね。OK?
0837nobodyさん
2005/05/22(日) 03:24:17ID:???0838nobodyさん
2005/05/22(日) 03:26:30ID:???相手に答えを求めるような方法は理論的とは言えない。
デザインとロジックの分離ということについて
もう少ししっかりと考えてみたら?
そうすればSmartyを使わない奴が屑中の屑であることが
よく理解できると思うよ?
もし理解できないのであればお前のプログラミングセンスが
無いんだろうね。OK?
と返されたらどうするの?
なぜ、Smartyを使うとデザインとロジックの分離が出来ないかを具体的に説明できないのなら、
お前さんの理論に現実味が無い事になる。
それとも、Smartyの知識が無い事を知られるのが怖いのか?
大抵の奴はSmartyについてちゃんと調べたりしてないで語ってる奴が多い。
例えば、>>788のような意見。
ロジックは記述できるが、記述しなければいいだけ。
つまり使う人間次第でロジックとデザインは分離できる。
>テンプレートってのは純粋なHTMLであるべきで、テンプレートをブラウザで
>見たらどのような物か分かるべきで、オーサリングツールで何の問題もなく
>開くことができるべき。
この意見だって、Smartyを知らないからこそ出てくるもの。
純粋にHTMLにしたければ、HTMLのコメント形式に出来る事がマニュアルに明記されている。
マニュアルから引用すれば、
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
というようにしっかりと記述されている。
0839nobodyさん
2005/05/22(日) 03:47:33ID:???別に未練もないし、すぐ乗り換えるんだけど。
教えてくれよ>>834
0841nobodyさん
2005/05/22(日) 06:41:17ID:???php側でテンプレート変数にhtml流し込むのヤメレ!そこのプログラマーさん!
tplの中のforeach文壊すのヤメレ!ちっとはマニュアル読め!そこのデザイナーさん!
ってことにはなりやすい
もっとシステムをガチガチにすりゃいいという考え方がないわけでもないけど
やっぱりこれは別にSmartyのせいじゃなくて使ってる側の使い方の問題
0842nobodyさん
2005/05/22(日) 18:31:08ID:???0844nobodyさん
2005/05/23(月) 00:38:50ID:???では使わなければいいだけ。
みんな必要だから使ってるんだが、それがわからない人がいる。
0845nobodyさん
2005/05/23(月) 03:35:36ID:???>例えば、>>788のような意見。
>ロジックは記述できるが、記述しなければいいだけ。
>つまり使う人間次第でロジックとデザインは分離できる。
はぁ・・・。想定の範囲内のウンコみたいなレスご苦労様です。
Smartyでそのような記述ができることは知ってるんだが。
でもSmarty使ってる奴でそんな使い方してる奴いるか?(いないね)
そもそもそのような(テンプレートにロジックを記述しない)使い方
をするならSmartyなんか使うわけが無い。
だからSmartyを使う奴はロジックとデザインの分離というものが
分かってない屑であるとはっきり言えるのよ。OK?
0846nobodyさん
2005/05/23(月) 04:23:22ID:???PHPはhtmlとPHPコードを混在した使い方ができるし、事実そのように使われている。
よってPHPを使うやつはロジックとデザインが分離できない。
みたいな論法かな。
0847nobodyさん
2005/05/23(月) 09:22:25ID:???じゃあ、何を使うと分離できるのかが知りたいよな。
それに、
>Smartyでそのような記述ができることは知ってるんだが。
>でもSmarty使ってる奴でそんな使い方してる奴いるか?(いないね)
自分でも言ってるけど、使う側の人間の問題じゃないのかな?
つまり、そういった記述すれば分離できる。
だけどさ、テンプレートにロジックを記述しない場合、
多少なりとも、ロジックの中にデザインが入るんだよな。
テンプレートだけに注目してるみたいだけど、この変どう考えてるんだろう・・・
0848nobodyさん
2005/05/23(月) 10:04:32ID:???或いは意図的に区別していないように見える。
0850nobodyさん
2005/05/23(月) 11:11:06ID:???ロジックとデザインって言ってるだけで、何がなんだかわかってないのではないか?
0851nobodyさん
2005/05/23(月) 16:37:02ID:???ビジネスロジックの中にデザインを混入するより
テンプレートの中にプレゼンテーションロジックを書いた方が
ずっとキレイだと思う。
0852nobodyさん
2005/05/23(月) 20:09:04ID:???説明してくれないか?
0853nobodyさん
2005/05/23(月) 21:41:52ID:???これができたら845がほしいものになるんだろうな。
0854nobodyさん
2005/05/24(火) 00:52:00ID:???0855nobodyさん
2005/05/24(火) 04:03:50ID:???できたらって、15年度じゃん。
開発成果にあるリンクは404だし、成果報告も中身が全然無いし、金の取り逃げか・・・
0856nobodyさん
2005/05/26(木) 00:22:45ID:???0857nobodyさん
2005/05/26(木) 00:51:43ID:???0858nobodyさん
2005/05/26(木) 12:41:56ID:???0859nobodyさん
2005/05/28(土) 16:36:41ID:sWsyG2zN0860nobodyさん
2005/05/28(土) 17:40:26ID:???ttp://www.kuwata-lab.com/kwartz/
コレのことだよね? ボクは使わせてもらってるけど……
0862nobodyさん
2005/05/28(土) 22:19:34ID:???既に放置?
0863nobodyさん
2005/05/28(土) 22:29:04ID:???なかなか便利そうだが
コマンドラインから実行しなきゃいけないのが
流れ的にどうかな…
0864nobodyさん
2005/05/28(土) 22:42:05ID:???もっさり感がイヤでSmartyはちょっとなぁと思ってたところなので
検討してみますか
0865nobodyさん
2005/05/29(日) 00:14:17ID:???自分的には Makefile でユニットテストや DB クラスの自動生成とかデプロイとか
管理してるから相性もよさそう。
0867nobodyさん
2005/06/01(水) 17:28:49ID:???0871nobodyさん
2005/06/01(水) 19:24:05ID:???理論的に反論しろというなら、Smartyとincludeを対比させて、
理論的に、どういった部分が面倒とかincludeが優れているかを説明しないと
説得力に欠けるよなw
0872nobodyさん
2005/06/01(水) 19:35:14ID:???≪メリット≫
モデル内でいちいちappendとかassignとかしなくても変数がそのまま使える。
直接<?php ?>や<?=?>が埋め込める。
≪デメリット≫
ない。最強。
・Smarty
≪メリット≫
キャッシュ。
修正子が使える。
≪デメリット≫
無駄に面倒。assignとかappendとか。
<?php ?>が埋め込めない。最悪すぎる。
0874nobodyさん
2005/06/01(水) 22:54:25ID:???確かにincludeで済むような気がしてきたw
0875nobodyさん
2005/06/01(水) 23:14:59ID:???「わりとデザイナーに分かりやすい」ってことくらいじゃね?
でも実際は、デザイナから受け取ってから
こっちで埋め込むことになるから(俺の場合)
includeでこと足りる気がするなぁ
どうなんだろ
0876nobodyさん
2005/06/01(水) 23:37:41ID:???0877nobodyさん
2005/06/01(水) 23:59:35ID:???0880nobodyさん
2005/06/02(木) 02:07:01ID:???0881nobodyさん
2005/06/02(木) 02:22:22ID:???遅くなったらキャッシュの意味がないんだけど。
0882nobodyさん
2005/06/02(木) 07:41:30ID:???でファイナルちんぽ?
0883nobodyさん
2005/06/02(木) 09:25:59ID:???俺もその形態で動いてる。
デザイナーにSmartyマニュアル渡して「覚えてくれよ」って言っても
「はぁ?」とか言われそうだし、デザイナーが外注の場合も多いわけで。
多分、Smartyはデザイナーが仕様を覚えて、プロジェクトで使う変数などの仕様を予め共有化させ
完璧にMVCとして稼動した時に性能が発揮されるんだろうなぁって思う。
まぁ、当然と言えば当然なのか。
0884nobodyさん
2005/06/02(木) 10:24:58ID:???0885nobodyさん
2005/06/02(木) 10:25:51ID:???0886nobodyさん
2005/06/02(木) 10:26:37ID:???0887nobodyさん
2005/06/02(木) 11:42:44ID:???かつValidなコーディングができる人なら訳ないよ。
ま、そんなデザイナーめったにいないわけだが。
0888nobodyさん
2005/06/02(木) 12:20:07ID:???0889nobodyさん
2005/06/02(木) 14:30:03ID:???0890nobodyさん
2005/06/02(木) 15:33:35ID:???0892nobodyさん
2005/06/02(木) 16:05:51ID:???なんてこった
今まで何となく新しそうだから使って来たが単なる変数埋め込みと大差ないなんて…
0893nobodyさん
2005/06/02(木) 16:15:48ID:???0894nobodyさん
2005/06/02(木) 16:17:07ID:???>モデル内でいちいちappendとかassignとかしなくても変数がそのまま使える。
↑こういうのをやめさせることができる
0895nobodyさん
2005/06/02(木) 16:23:24ID:???制限を設けさせることができるのがメリットといえばメリット。
単なるデザイナーとの連携という点ではメリットはないよ。
デザイナーとの連携なんかフルCSSデザインにして、テンプレート自体
いじる必要なくすのが一番手っ取り早いし
0896nobodyさん
2005/06/02(木) 16:41:46ID:???とはいえプレゼンテーションロジックも入って来るし
phpも書くことは出来る…
メリット薄っ
0897nobodyさん
2005/06/02(木) 16:46:49ID:???Smartyの知識はないようですね。キャッシュとコンパイルの
区別も付いていない人も居るみたいですし。
0898nobodyさん
2005/06/02(木) 16:55:48ID:???0899nobodyさん
2005/06/02(木) 17:03:48ID:???あとサニタイズもやりやすい気はするなぁ
ただメリット群がモッサリした遅さと
トレードオフするかというと疑問符…やはり遅さがネックだな
0900nobodyさん
2005/06/02(木) 17:10:19ID:???Smartyにメリットが無いなんていってるやつは営業の事を全く考えていない。
何の特色も無いプログラムをアピールするのは至難だと言うことに気づけ!
「世界的に普及していて実績もあるMVCフレームワークのひとつであるSmartyは
LAMPとの相性も最高で、かつて無い抜群のパフォーマンスを発揮します」
てな調子で煽っておけばバカな客はよくわかんねーけどすごそうだと思い込むし
少しバカな客は書店などで冒頭の謳い文句だけ読んで最新技術なのか〜
なんて思い込むものさ。その結果ボったくっても文句言われにくくなるので
仕事も安定するし、収益も上がる。
ほんのわずかな実行速度や手間をケチったおかげで仕事が減っては本末転倒。
どうだ?使いたくなってきただろw
0902nobodyさん
2005/06/02(木) 17:16:49ID:???0903nobodyさん
2005/06/02(木) 17:31:57ID:???0904nobodyさん
2005/06/02(木) 17:37:35ID:???0905nobodyさん
2005/06/02(木) 17:40:11ID:???Perlとかと比べるとメリット薄いといえば薄いが
必要ないって事も無いと思うけどな。
0906nobodyさん
2005/06/02(木) 18:08:29ID:???「若干過大評価されている」気はするな、世間的に。スマーチィ。
0907nobodyさん
2005/06/02(木) 19:31:36ID:???まだ、本格的に使ってるわけじゃないんで、アドヴァンテージがSmartyにあるなら、
乗り換えてみようかなぁ、とか思うんで。
0908nobodyさん
2005/06/02(木) 19:38:15ID:???0909nobodyさん
2005/06/02(木) 21:23:12ID:???mojaviデフォルトのテンプレートシステムにちょっと機能加えるくらいの方がいい
0910nobodyさん
2005/06/02(木) 21:47:27ID:???0911nobodyさん
2005/06/03(金) 00:57:34ID:???0913nobodyさん
2005/06/03(金) 01:30:10ID:???0914nobodyさん
2005/06/03(金) 03:25:09ID:???0915nobodyさん
2005/06/03(金) 15:41:14ID:???0916nobodyさん
2005/06/03(金) 20:29:17ID:???作るなら勝手に作ればって感じだけど
お前が考え付くようなウンコな仕様はすでに誰かが作ってるよ。
無駄ってこと。
0917nobodyさん
2005/06/03(金) 21:07:54ID:???0919nobodyさん
2005/06/03(金) 23:45:39ID:???必要最小限の機能があって速ければね
viewなんてそんなに機能いらないだろ
0920nobodyさん
2005/06/04(土) 01:23:57ID:???全然逆じゃない。
>お前が考え付くようなウンコな仕様はすでに誰かが作ってるよ
なんて言ってるようじゃ進歩はしないね。
0921nobodyさん
2005/06/04(土) 01:27:25ID:???なんで駄目なんだとか聞くうんこなら、ってことじゃねーの?
0923nobodyさん
2005/06/04(土) 01:53:02ID:???0924nobodyさん
2005/06/04(土) 02:01:06ID:???0925nobodyさん
2005/06/04(土) 02:07:05ID:???0926nobodyさん
2005/06/04(土) 03:08:21ID:???とかいう有難いお言葉をラクダ本で読んだ記憶がある
>>924
会話もフレームワーク化すると再利用しやすくなってウマー
0927nobodyさん
2005/06/04(土) 05:13:25ID:???ラジコンのタイヤ程度のものどんどん再発明すればいいじゃん
0928nobodyさん
2005/06/04(土) 12:26:05ID:???0930nobodyさん
2005/06/04(土) 13:30:42ID:???車輪だけど、車輪は作ることによって得ることも大きい。
使う方にとっちゃ、ちゃんとした車輪を選択するけどな。
0931nobodyさん
2005/06/04(土) 15:31:37ID:???0932nobodyさん
2005/06/04(土) 17:54:24ID:???ループはforeachがあるし、条件分岐はifがあるし
存在意義がよく分からん。
0933nobodyさん
2005/06/04(土) 21:03:07ID:???0936nobodyさん
2005/06/04(土) 23:17:10ID:???forの替わり
0937nobodyさん
2005/06/04(土) 23:51:52ID:???一通りマニュアル読んだけど、今のとこいまいち使いどころがない。
そのうち出てくるかも。
0938nobodyさん
2005/06/05(日) 03:50:52ID:???foreachの前にsectionを知ったからそのまま使ってるだけだしなぁ。
まぁ別にあって困るもんじゃないし、sectionでもforeachでも
好きなほうを使えばいいんじゃない?
0939nobodyさん
2005/06/05(日) 13:00:58ID:???[テンプレ側]
{loop name=hoge}
$name
$title
$comment
{/loop}
[PHP側]
foreach ($foo) {
$smarty->append("name" => "aaa", "title" => "bbb", "comment" => "ccc");
}
0940nobodyさん
2005/06/05(日) 13:03:09ID:???こんな感じ。
[PHP側]
foreach ($foo) {
$smarty->append(
"hoge" => array(
"name" => "aaa",
"title" => "bbb",
"comment" => "ccc"
)
);
}
0941nobodyさん
2005/06/05(日) 13:06:31ID:???こんな感じ。
[テンプレ側]
{loop name=hoge}
名前:{$name}
タイトル:{$title}
コメント:{$comment}
{/loop}
0946nobodyさん
2005/06/05(日) 23:53:09ID:???おいおい、しっかりしろよ・・・
人のことをガキ呼ばわりする前にもう少し頭使おうぜ
> foreach ($foo) {
> $smarty->append(
> "hoge" => array(
> "name" => "aaa",
> "title" => "bbb",
> "comment" => "ccc"
> )
> );
> }
0947nobodyさん
2005/06/06(月) 22:42:10ID:???いちいち細かい奴だな。
別に動くプログラムを組んでるわけじゃないんだから
雰囲気だけ分かりゃいいだろうが。
雑魚はこれだから。
0948nobodyさん
2005/06/06(月) 23:00:55ID:???0949nobodyさん
2005/06/06(月) 23:54:30ID:???むちゃくちゃな構文で質問して、
まともな答えもらおうっていう方が甘ったれてんだよ。
百年ほど人生やり直してこい。
0950nobodyさん
2005/06/07(火) 01:28:14ID:???おいおい。勘違いしてもらっちゃ困るんだが。
お前らみたいなアホに質問なんかしねーってw
日本語すら理解できないような池沼からまともな答えなんて
期待してねーっつの。ちゃんとスレ読み直してみろよ。
日本語も分からないでプログラム言語か?
順序が違うんじゃねーのwww
0951nobodyさん
2005/06/07(火) 01:58:41ID:???脳味噌まで自己中とは恐れ入ったな(プ
0952nobodyさん
2005/06/07(火) 10:09:04ID:???0953nobodyさん
2005/06/07(火) 10:14:08ID:???0954nobodyさん
2005/06/07(火) 12:08:14ID:KvahcTPl外部cssいじらせた方が良いと思うがなぁ。もちろんデザイン的に外部cssのみではどうにもならん場合も
あるだろうが、どうにかなる場合の方が多いだろうし。
論理構造を始めに決めときゃ、デザインもらってロジック埋め込むなんてせんでも同時に製作始められるし、
loopやifがもっとスッキリ書けてオーサリングツールと完全に連携できるテンプレートエンジンがありゃいいけど
テーブルの行の色やら列数をデザイン側で任意に変更させるのにデザイナに↓こんなんの説明とかしても
あんまり意味あると思えんしなぁ。
<table>
<!--{section name=row loop=$LIST step=3}-->
<tr>
<!--{section name=col start=$smarty.section.row.index loop=$smarty.section.row.index+$smarty.section.row.step}-->
<!--{if $LIST[col] != null}-->
<td><!--{$LIST[col]}--></td>
<!--{else}-->
<td> </td>
<!--{/if}-->
<!--{/section}-->
</tr>
<!--{/section}-->
</table>
0955nobodyさん
2005/06/07(火) 12:40:16ID:???0956nobodyさん
2005/06/07(火) 18:55:39ID:???0957nobodyさん
2005/06/07(火) 21:49:38ID:???0958nobodyさん
2005/06/08(水) 00:40:41ID:???ブラウザでプレビュー際にコードが表示されて邪魔にならないのかな
0959nobodyさん
2005/06/08(水) 00:54:41ID:???PHP直接埋め込むよりはマシかと。
<A HREF="<?php echo $aa ?>">aa</a>
みたいのだとぐちゃぐちゃになって目も当てられない。
でもSmartyって、制御構造とか入れると結局テンプレートも煩雑になるし、
コストも高いし、自由度は低いしで、俺は自前で{$form['aa']['bb']}みたいのを埋め込んだ
テンプレートを作ってevalで埋め込みしてるよ。
$output = file('テンプレートファイル名');
array_unshift($output, "print <<<EOTNJGTU\n");
array_push ($output, "EOTNJGTU;\n");
eval(join("", $output));
こんな感じで。実際にはクラス化して結果をリファレンスでも取れるようにしたり、使いやすくしてる。
テンプレート中での制御構造は潔く諦めて、テーブルなんかはViewクラスで生成して
変数にぶちこんだものを上記の方法でテンプレートに埋め込んでる。
小規模開発ならこれで充分だと思う。
0960nobodyさん
2005/06/08(水) 03:06:51ID:???0961nobodyさん
2005/06/08(水) 05:13:08ID:???0962nobodyさん
2005/06/08(水) 09:25:23ID:???つhttp://www.contactlensesprice.com/smarty/
0963nobodyさん
2005/06/08(水) 22:34:16ID:???逆にCSSなんかは今やYahooですら使ってる必須技術。
開発側もCSS自由自在にデザインできるテンプレートを作ってやれる程度には
ならんとな。
0965nobodyさん
2005/06/09(木) 00:09:22ID:???963じゃないけど、CSS != HTML
CSSは結構奥深いよ
DOMと組み合わせたりして、面白いことが色々出来る
ブラウザの対応がバラバラなのが痛いがなー
0967nobodyさん
2005/06/09(木) 01:33:29ID:???0970nobodyさん
2005/06/10(金) 21:16:50ID:???0971nobodyさん
2005/06/10(金) 21:42:17ID:???0972nobodyさん
2005/06/10(金) 21:59:54ID:???0973nobodyさん
2005/06/10(金) 22:02:05ID:???そんなどうでもいいことで簡単に切れるか
0978nobodyさん
2005/06/11(土) 00:30:57ID:???|(・)。(・)| ( )< バッドノウハウなんだね!
|ヾ三ヲ└'ノ
.| l´
つ ま り
0979nobodyさん
2005/06/11(土) 00:36:32ID:???プログラマはSQL書いて結果を配列で渡すだけみてーな仕事増えそうだけどなー。
0984$default_modifiers、$debuggingの設定でparse error
2005/06/11(土) 11:33:33ID:uAXJbuvYdebug.tpl.phpがParse errorになるのですが、
最後に述べる解決方法でより良いものを知っている人が教えてください。
問題の発端は{$hoge}でParse errorになったのですが、そちらは解決できました。
(PHP 4.3.9とSmarty 2.6.9を使用
・hello.php
<?php
require_once("libs/Smarty.class.php");
$o_smarty=new Smarty();
$o_smarty->default_modifiers=array("upper");
$o_smarty->assign("hoge","abc");
$o_smarty->debugging=true;
$o_smarty->display("hello.tpl");
?>
・hello.tpl
<html><head><title></title></head><body>
{$hoge}</body></html>
・出力
ABC
Parse error: parse error, expecting `T_VARIABLE' or `'$'' in
(中略)templates_c(中略)debug.tpl.php on line 10
・debug.tpl.php 10行目
<?php if (isset ( ((is_array($_tmp=$this->_tpl_vars['_smarty_debug_output'])) ?
$this->_run_mod_handler('upper', true, $_tmp) : smarty_modifier_upper($_tmp)) ) && ((is_array($_tmp=$this->_tpl_vars['_smarty_debug_output'])) ? $this->_run_mod_handler('upper', true, $_tmp) : smarty_modifier_upper($_tmp)) == 'html'): ?>
・解決方法
core.display_debug_console.phpを修正
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=5179&highlight=expecting+tvariable
件の解決策は以下を考えました。
・if empty($hoge|smarty:nodefaults)と書いてParse errorを避ける。
・またはデバッグの時は、default_modifiersをコメントにする。
根本的な解決策はSmarty側のどこかのソースを修正しなければならないのでしょうか?
(できればhello.tpl、phpは修正したくないです。)
レス数が950を超えています。1000を超えると書き込みができなくなります。