smartyでの0(ゼロ)の扱い

3月 31st, 2008 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

smartyで以下の項目を満たすようにタグを作るのに手こずりました。

・0(ゼロ)は表示する
・数値が何もない場合は、半角スペースを入れる(htmlの表示の関係で)

 
まず最初にやったことが、

{if $hoge}{$hoge}{else} {/if}

これだと、0(ゼロ)がNULLと同じ扱いになるので、
0(ゼロ)という表示はされませんでした。

 
そこでsmartyのif分の中にPHPの関数を入れられることを知り、
以下のようにしてみました。

{if count($hoge)}{$hoge}{else} {/if}

しかし、これでも0(ゼロ)がNULLと同じ扱いになるので、
0(ゼロ)という表示はされませんでした。

 
そもそもif分の中でPHP関数が使えるのであれば、、、
ということで、以下のような表記に変更。

{if strlen($hoge)}{$hoge}{else} {/if}

 
これでやっとできました。
 
tagged:

Trackback URL for this post:

smartyコンパイルでの文字化け

3月 31st, 2008 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

あるサイトを作っていて、
一部文字化けしているところがありました。

最初はsmartyでincludeしているテンプレートが
間違っていて文字化けが起きていたのですが、
それを直しても文字化けは解消されませんでした。

そこでいろいろ見てみると、
smartyのコンパイルファイルが残っていて
ずっと文字化けしていることが発覚しました。

 
ということで対処法としては、

$compile_dir

で指定しているところにある
コンパイルファイル削除で出来るようになりました。

 
よくよくsmartyマニュアルを見てみると、

Smartyは初回の実行時にテンプレートをテンプレートエンジンによってコンパイル処理し,コンパイル後のコードを1次ディレクトリに保存する.これにより2回目以降の処理では,通常のPHPスクリプトを実行するのと同等のパフォーマンスを実現できるほか,コンパイル処理は,テンプレートファイルが更新されたタイミングで自動的に実行されるため,開発者がコンパイル作業を意識する必要がないという特徴がある.

 
自分がまた見てなかっただけのようです。。。(苦笑)
 
tagged:

Trackback URL for this post:

テンプレートの文字化け

10月 30th, 2007 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

PHPとsmartyを使ったサイトを構築している際に、
以下のようなエラーが出て、はまっています(苦笑)

syntax error: mismatched tag {/section}. expected {/if}

 
どうやらプリフィルタとかアウトプットフィルタとかがうまくいってないようなのですが・・・
未だにこの2つを理解しきってはいませんorz

 
とりあえず今日は置いておいて、
明日いろいろ調べようと思います。
 
tagged:

Trackback URL for this post:

smartyとPHPのMVC具体例

10月 26th, 2007 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

システム初心者の私は、
MVCを理解し切れていません(苦笑)

ですが、最近ちょっとわかってきたことがあります。

 
それは、文字列をクエリの中とかにあまり入れてはいけないということ。

具体的にいうと、

SELECT
IF([カラム名] , ‘○’ , ‘-’ )
FROM
[テーブル名];

といった風に、
SELECTの時点で文字列を入れているアプリがあったのですが、
これをやめてsmartyで制御したほうがよさそうです。

{if $test}○{else}-{/if}

 
ファイルの文字コードとかが絡んでくると面倒な話になります。
(文字コード変えたとたんに表示されなくなるとか。)

今までテンプレートとアプリを
どの線で区切っていけばいいかわからなかったのですが、
ひとついい勉強になりました。
 
tagged:

Trackback URL for this post:

PHP4とPHP5の違いを知る

10月 12th, 2007 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

仕事でPHP4からPHP5にアップデートしました。

その際に、スクリプトをPHP5対応にしなければいけなくなり、
いろいろ調べました。

 
ですが、結構PHP4とPHP5の違いを調べるのにてこずった記憶があります。

そこでご紹介するのが、なぜかsmartyの本です(笑)

 

Smarty入門~PHP5+テンプレート・エンジンでつくるMVCアプリケーション~
山田 祥寛
翔泳社 (2005/03/15)
売り上げランキング: 15905

 
この本はsmartyの本なのですが、
半分ぐらいPHPの開発について書いてあります。

その部分の注釈に結構PHP4とPHP5の違いが書いてあったりします。

WEBで調べると高度な話?が書いてあってわからないことが多いのですが、
PHP初心者向けに書いてくれているのでわかりやすいです。

 
これを知りたい方は是非。
 

tagged:

Trackback URL for this post: