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

【PHP】Smarty【Template】

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

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

日本語マニュアルとか
http://sunset.freespace.jp/smarty/
0360 ◆AngelH/kMI 04/02/28 23:27ID:???
久々に書き込み。
引っ越しして超ナローバンドなためきつい・・・。
後2週間はこのままかと思うと気が重いっス。

http://sourceforge.jp/projects/phpoot/
ネタ投入。
見る限りではなかなかよさそうなんだけど、
誰か使ってみた人いますか。
自分所では動作しなく・・・。

>>352-354
自分はDreamweaver使ってますよ。
設定すれば勝手に書き換えたりしなくなるし。
(比較的)まともなHTMLはき出してくれるので、ver1.2の頃から愛用しています。
0361nobodyさん04/02/29 08:02ID:???
>>360
俺も翻訳者のwebみて知ってこれ良さそうと思ったけど
何ひとつサンプルが動かないのは如何なものか(´д`;)
ぜったい テストされてねぇ〜・・・・・

とりあえずソース何ヵ所かいじったら動いたけど<img><br>タグ閉じてないよっておこられまくって
ふて寝しますたorz
0362 ◆AngelH/kMI 04/02/29 14:47ID:???
>>361
む、動きましたか?
触った箇所教えてくれると助かりまつ。

<img><br>が動かないのは、XHTML準拠、とのことでエラーになってるのかと。
それぞれ
<img src="hogehoge" />
<br />
にして試してみてー。
0363nobodyさん04/02/29 16:53ID:???
>> 360-362
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のほうが`まだ`出来が良い。
0364 ◆AngelH/kMI 04/02/29 21:46ID:???
>>363
サンクス。
こっちでも一応動作確認出来ました。
まあ、今後に期待ってことでSmartyに戻ります(笑

うちの環境だと、一回目のアクセス時(つまりcompileするときに)
phpoot.parser.phpがundefined index出しまくりで気になる・・・。
0365nobodyさん04/03/08 07:32ID:???
{$hoshu}
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 さんのアドバイスが
良く分かっていません。
ヒントへのポインタでも結構ですのでアドバイスをお願いできますでしょうか??
036736604/03/11 16:11ID:???
言い忘れていました、header の部分も、ページごとに動的に変化します。
今のところ<title>xxxx</title> に表示するデータの一部を入れているだけですが。。。
0368nobodyさん04/03/12 01:00ID:9XQjrMWL
最新のPHP+SmartyでSafe modeをonにすると...
pluginsがエラーになるんですけど...
ちなみに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がいけないのかなぁ?
0369nobodyさん04/03/12 13:35ID:???
>>366
自分でテンプレートもPHPのコードも書くならどっちでもいいんじゃないすか?
0370nobodyさん04/03/12 21:47ID:???
>>366
Smartyのサブクラスを作成(例:mySmarty)して、
親クラスのメソッド:display()をサブクラスでオーバーライドしれば?

mySmartyの生成時にヘッダ・フッタのデータを渡して、
$mySmarty->display()したときにmySmarty内部で、
ヘッダ・フッタをassignして、親クラスのdisplay()を呼ぶみたいな。
0371nobodyさん04/03/13 00:31ID:???
>>366
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:???
>>366

先週から使い始めました。

header.tlp
footer.tlp

上記の2ページの内容or作る人のスタイルにもよると思いますが、
ヘッダー・フッターが静的なHTMLなのであれば、テンプレート側で読み込んだ方が、
テンプレートを作る人のことを考えれば理解しやすいんじゃないでしょうか?

テンプレート作る人が、呼び出し元のPHPを読まないと、
ページ構成を理解できないっつうのは、Smartyの利点を1つ殺してる気もするし・・・
0373nobodyさん04/04/20 02:11ID:???
Smarty plugin のpager
http://smarty.incutio.com/?page=pager
これの使い方が今ひとつ分かりません。どなたかヒントいただけないでしょうか?
0374nobodyさん04/04/20 19:31ID:???
PEARのPagerとかDB Pagerを参考にしてみたら
使った事ないからなんともいえないけど
037537304/04/21 14:27ID:???
アドバイスありがとうございます。PEAR の方を見ながらいろいろと試行錯誤してみました。
今のところ次の方法で使えてます。

基本的には
{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:???
>>375
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} のネストをうまく動作させることが出来ません。

{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 しています(こまかな処理は省略しています)。
037837704/04/23 13:03ID:???
また、{debug} でみると変数には
{$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 => 出版
こんな感じに表示されます。
037937704/04/23 13:04ID:???
php から渡された変数には値が入っているので、ループ無しで直接{$sub_dat[0][0].job} としても表示されませんでした。
バッククォートあたりだとは思うのですが{`$sub_dat[0][0].job`} とすると
syntax error: unrecognized tag のFatal error が出てしまいます。

アドバイスをお願いできますでしょうか? 長文ごめんなさい。
038037704/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:???
smartyって、
外部ファイルを書き出すことはできますか?
038238104/05/14 19:38ID:???
あるいは、PHP版HTML::Templateで外部ファイルを書き出すことはできなすか?
0383nobodyさん04/05/14 20:12ID:???
>>381
出力せずに一旦変数へ取り込んで、書きだしゃいいだろ。
038438104/05/15 01:31ID:???
いったん変数にとりこむって、どうすればいいのでしょうか?
$smarty->displayだと、出力しちゃいますよね。。。
0385nobodyさん04/05/15 01:50ID:???
いくらなんでもマニュアル読まなさ杉
せっかく日本語であるのに
038638104/05/15 02:01ID:???
をを、みのがしていた、
// 出力を取り込む
$output = $smarty->fetch("index.tpl");
ですね。ありがとうございました。
0387nobodyさん04/06/06 14:52ID:???
smartyは配列の使い方が面倒だなぁ。
連想配列はまだいいんだけど。
0388nobodyさん04/06/10 14:49ID:???
ttp://www.phpinsider.com/php/code/SmartyFormtool/
の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には何を入れるのだろうか?


0389nobodyさん04/06/10 19:33ID:???
試さずにカキコ。

>>388 例題をそのまま入力して{debug}したら何か分かったりしませんか?
0390nobodyさん04/06/10 20:03ID:???
>>389
例題をそのまま試すと、テーブルは表示されるのですが、中のボタンが表示
されるところで、

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=39004/06/11 16:54ID:???
>>391
お手数おかけしましてすみません。

demo画面のソースをみると、ddやffはcolors5_saveやcolors6_saveなんかに
置き換えると良さそうです。
しかし、実行してみるとページエラーが発生してmoveができませんでした。
JavaScriptコンソールでみるとformtool_moveは定義されてないとエラーが
でています。

私もJavaScriptはよくわからないのですが、この機能は是非使いたいので
調べてみます。
0393nobodyさん04/06/11 17:24ID:???
.tpl ファイルに
{formtool_init src="/hoge/javascripts/formtool.js"}
は入れた? パスは適宜直してね。
0394388=39004/06/11 18:04ID:???
>>393
動きました!

javascriptへのパスが一文字間違ってました。
どうもありがとうございました。
0395nobodyさん04/06/28 15:15ID:???
PHP 質問スレッドの方から誘導されて来ました。
過去ログさらってみましたが見あたらないので質問をば。
--

Smarty を久々にバージョンアップした所、動作が変わって対処に悩んでまつ。

定義されていないテンプレート変数、例えば {$hoge} に assign が無ければ、
以前はスキップしてくれたのですが、バージョンアップ後は
>FATAL .. Undefined index hoge
とエラーを吐いています。
いちいち {if isset($hoge)} と囲うのも鬱陶しく、どう対処すべきかな〜、と。

# Smarty の設定かと思いマニュアル見直しましたが適当な設定は見あたらず。
# $smarty->undefined = NULL とかも試しましたが変化無しでした。
0396nobodyさん04/06/28 15:55ID:???
>395
違うかもしれんが、
{$hoge|default:""}
でいいんでないかい?
039739504/06/28 16:08ID:???
>>396
if で囲むよりそちらの修正子の方が分かりやすいですね。
取り敢えずそちらで逃げる事にします。
謝謝。
039839604/06/28 16:51ID:???
HelpのTips & Tricksにも書いてあるけど、
テンプレートの最初のほうとかに
{assign var="hoge" value=$hoge|default:""}
見たいに書いとくとすっきりするかもね。
単発で使うのなら{$hoge|default:""}でよさげ。
0399nobodyさん04/06/28 23:20ID:???
もうこうなっちゃうと
テンプレートというより新しい言語のようだ。
乗り換えることにする。
0400nobodyさん04/06/29 00:19ID:???
>>399
どんな優れたライブラリでも、使い方次第で単純にも煩雑にも書けるわけで。
smartyにいたってはテンプレートにロジックを書く事を許容しちゃってるので
mvc(もう少し適切な言葉がありそうだな・・・)を意識しないとsmartyを
使用する有り難味が薄れるだろうね。まぁ俺はとっくに乗り換えたんだけれど・・・。

>>395
$smarty->undefined はもう無くなったよ。未定義の場合は基本的にnullで決めうちになった。
ただ、テンプレート変数のtypoがあった場合に何も表示されないだとデバッグに困るから
$smarty->debugging = true; の時だけエラーが出るようになってる。
だからこれをfalseにしたらどう?一応2.6.3で確かめてみたところ大丈夫だったが。
040139504/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 使ってみようかな、とか考えとります。
040240004/06/29 03:57ID:???
>>401
生成されるコードに違いはなくても、debugging = false した時に
fetchメソッドの内で error_reporting() & ~E_NOTICE されるようになってるんだけど。
mojaviはE_ALL前提で作られてるし、(ていうかコードの初っ端がerror_reporing(E_ALL);)
途中でエラーレベルも変更したりしないから、やっぱsmartyか原因かと思うんだけど・・・違う??
040339504/06/29 05:20ID:???
>>402
勉強になります。

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二年やってきて今更PEARとSmarty使ってコーディングしてみたんだけど、これはすごいね。
俺のアドレナリンが吹き出る。

あとはPHP エディタで対応してくれれば文句なしー。
0405nobodyさん04/07/14 10:40ID:???
>>388のSmartyFormtoolですが、Javascriptがおかしいですね。

何かをセレクトして右から左へ移動…1
何もセレクトせず左から右へ移動…2

1のときと1+2のときでフォームから送られてくる値が違う
(2の操作で値全体が入れ替わってしまう)。
Javascriptがわかれば直すんだけど…

0406nobodyさん04/07/17 11:11ID:ckMFe6vn
Smartyのwordwrapは日本語にかけても大丈夫でしょうか?
エンコードはUTF-8を使ってます。
0407nobodyさん04/07/17 11:38ID:???
>>406
かけてみた?
040840604/07/17 12:16ID:???
>>407
いくつかの文章で試してみました。
EUC-JPの時は文字化けしてたけど、UTF-8なら一見すると大丈夫かと思ったら
よく見ると文字が一部消えたりしてました。やっぱダメそうですね。
0409nobodyさん04/07/22 17:59ID:gMMxLyKo
たまにはageてもいいじゃない
やまない雨はないじゃない
0410nobodyさん04/08/01 00:39ID:QU2e9+ue
一つ聞いてやるSmartyなんか使わなくてもMVCはできるだろぉう?
なんで、みんなSmaryマンセーなの?
0411nobodyさん04/08/01 04:46ID:???
態度が気に喰わない
0412nobodyさん04/08/01 08:44ID:QU2e9+ue
>411
えー、そんな事言わずに教えてよぉー。
0413nobodyさん04/08/01 13:32ID:???
女だったら教える。
0414nobodyさん04/08/01 17:08ID:???
要はさ、PHPって難しいのよ。
プログラミング言語としては簡単な部類に入るかも知れないけど、
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
フォームから正の整数を入力して送信すると、1からその数までの整数の並びを表示するPHPスクリプトを作らなくてはならないのですが皆目検討がつきません…(つД`)
なにかアドバイスをお願いします。
0421nobodyさん04/08/04 16:56ID:???
>420
宿題は自力でやろうな坊や
てか、ここで聞くな馬鹿
0422nobodyさん04/08/04 23:15ID:???
ageるとロクな事がないな
0423nobodyさん04/08/05 21:11ID:???
range()
0424nobodyさん04/08/05 23:41ID:???
キャッシュをONにすると色々問題が起きます
0425nobodyさん04/08/06 11:13ID:???
phpのnumber_formatに相当する関数ってないですよね。
っと、書き込もうとして気づいた。register_functionで追加すればいいのか。
0426 ◆AngelH/kMI 04/08/08 22:37ID:???
>>425
number_formatならregister_function使わなくても呼べますよ
0427nobodyさん04/08/09 01:33ID:???
>>426
あら本当だ。フィルタ的に使えるのね。

つーか、引数1つで戻り値があるPHPの関数は以下の要領で使えるんですね。
{$number | number_format}
{$string | md5}
引数が複数の場合はどうするんだろう。出来ないのかな?(そんな機会はそうそうなさそうだが)
マニュアルに書いてありましたっけ?
探してみたんですけど、どこに載っているのか見つけられなかった。
0428 ◆AngelH/kMI 04/08/09 05:02ID:???
>>427
引数が複数ある場合は第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:???
>>428
いろいろどーもです。
>>425のregister_functionに気づいた時点で書き込みをやめようと思ったんですが、
書き込んでよかった。勉強になりました。

//何気に古い酉を晒してみりゅw
0430nobodyさん04/08/09 18:15ID:???
うお!誰かと思ったら(笑
0431nobodyさん04/08/13 16:34ID:???
modifire?
0432nobodyさん04/09/01 16:13ID:DiPaFBrX
age
0433nobodyさん04/09/02 00:30ID:???
modifierでmb_truncateとかmb_wrapだの色々用意してはみたのだが、デザイナさんが使ってくれなくて寂しい
0434nobodyさん04/09/02 11:15ID:???
>>433
デザイナがHTML作って、
プログラマが組み込んでいるので使い放題!

・・・・(T-T)
0435nobodyさん04/09/11 11:24:55ID:vqhAT/1H
同じ例えば xxxx.php 内でユーザーがログインしてるかしてないかによって
表示を変えて使う場合、smartyのキャッシュ機能が問題起こす可能性はあるでしょうか?
誰かがログインした状態がキャッシュされてしまって
ログインしていない人にそのページが見えちゃうとか。
0436nobodyさん04/09/11 12:35:32ID:???
2.6.4入れたら、単純な四則演算(+とか/とか)でエラーが出るよぅ。
0437nobodyさん04/09/11 18:28:06ID:K5FwXM+0
>>435
キャッシュ、意外と使えなかった・・・。

テンプレートにアサインした結果をキャッシュするから、
テンプレートが同一なら問題起こる可能性あり。

>>436
どんな式?
0438nobodyさん04/09/12 01:33:02ID:???
Smartyのキャッシュ機能かぁ、使ったこと無いが需要あるのかな。
php使った動的ページで、しかもログインページなんて
ブラウザのキャッシュすら一応Metaタグとかで無効にしといた方が良い気がするが。

テンプレートエンジンのオーバーヘッドが気になるのなら
それこそ、動的な出力とインクルードしたテンプレートから生成された出力結果を
ファイルに書き出して静的htmlファイルを公開フォルダに置いた方が
良いだろうし。
0439nobodyさん04/09/12 02:45:25ID:JBS0QrEF
>>435
キャッシュIDをうまく使ってやれば平気。

>>438
テンプレートエンジンより、assignする値をDBなんかから持ってきてるときにオーバーヘッドがでる。
0440nobodyさん04/09/12 04:22:23ID:???
Smartyってあんまメリットなくない?
PHP自体で十分デザインとテンプレートの分離はできるし、
キャッシュ機能つくるのも特に大して手間じゃないし…

0441nobodyさん04/09/12 04:33:01ID:???
>>440
まずは自分のレスだけでいいから省みてみろ
0442nobodyさん04/09/12 05:08:05ID:???
>>441
まずは自分のレスだけでいいから省みてみろ
0443nobodyさん04/09/12 05:18:14ID:???
>デザインとテンプレートの分離

ワラッタw
0444nobodyさん04/09/12 06:21:43ID:???
>>439
??そりゃDBだろうがlogファイルからだろうが、演算結果だろうが
動的に出力する値は全部オーバーヘッドになるだろうさ。
Smartyのキャッシュ機能とはまるで関係ないのでは?
そこが気になるならWebアプリ自体使えないと思うが。
0445nobodyさん04/09/12 06:31:44ID:???
>>440
Smartyのメリットはプログラマよりデザイナに対してのものだと思う
0446nobodyさん04/09/12 06:37:44ID:???
いま、>>445がいいこといった。 メモしとけ。
0447nobodyさん04/09/12 06:45:25ID:???
>>444
いちいち値取りにいくのがオーバーヘッドになるから
その為のキャッシュ機能ですが?
0448nobodyさん04/09/12 08:27:29ID:7xfelydB
キャッシュをONにしたら、2,3割の確率で、しかもランダムな箇所で、
エラーを吐くようになったのですが・・・。

これってどうしようもないですか?

ひょっとして、テンプレートファイルのなかで
{php}
ほげほげ
{/php}
を数カ所使ってるのがいけないのでしょうか・・・
0449nobodyさん04/09/12 13:42:47ID:???
>>445
いや、デザイナの為ならなおさらSmarty使わないほうがいいだろw
DWとかはPHPタグで囲んだ部分は表示されないようになってるし
0450nobodyさん04/09/12 15:17:40ID:???
>>448
せめてエラーメッセージを書かないと。
0451nobodyさん04/09/12 15:31:00ID:???
>>448
すいません、同時にPHPを5.0.1にあげたんですが、4.3.8に戻して、
smartyのキャッシュを有効にしても、全然問題なかったです。

PHP5.0.1のせいだったみたいです。どうもすみません。
//しかしPHP5のSOAP使いたい・・・
045243604/09/13 00:26:30ID:???
>>437
遅レスすまんす。
普通に{$hoge+100}とかです。
本家のフォーラム見たら同じ問題が出ていて、CSV版では問題ないよ。って書いてあった。
めんどいから2.6.3に戻しましたけど。
0453nobodyさん04/09/13 02:45:25ID:???
>>449
オーサリングツール使ってhtmlファイルだけ渡して後は知らねぇってデザイナと、
デザイン上の修正の度にプログラマにも修正依頼しなきゃいけない様な
状況でしか仕事したことないなら、その環境は恥じた方がいいよ。
0454nobodyさん04/09/13 10:46:56ID:???
別にオーサリングツールで編集しやすいって言っただけでなんで…
勝手に勘違いして人の仕事環境妄想して、妄想で創った人物像相手に
レスする癖は恥じた方がいいよ?
例えばSmartyのforeach文が修正できてphpのそれが修正できないなんて奴いねぇだろw
対応エディタもマニュアルも多い分Smarty使うよりPHPタグで分けた方がデザイナ的にも
やりやすいってだけの話なんだけど?
0455nobodyさん04/09/13 11:07:47ID:???
PHP-users とはまた違った痛さがこのスレにはある!
0456nobodyさん04/09/13 11:46:10ID:u+cNXRva
>>449
Smarty用のDWプラグインがあるよ。
0457nobodyさん04/09/13 12:00:43ID:???
>>456
それXOOPSだと使えないよね
0458nobodyさん04/09/13 12:02:37ID:???
あぁごめんXML修正すりゃいけるか
0459nobodyさん04/09/13 13:27:37ID:???
なんかそのままだと日本語との兼ね合いで調子悪いな>DWプラグイン
変なとこでSmartyタグ扱いされちゃう。
0460nobodyさん04/09/13 14:17:29ID:???
>>459
SJISだと { } が悪さをする。ってかそれはSmarty全般じゃない?
■ このスレッドは過去ログ倉庫に格納されています