忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/17 08:30 |
Smarty-05:Smartyの便利関数

Smartyには、変数を格納して表示する以外に、テンプレートを作成する上で便利な機能がいくつも存在します。

試しに{html_select_date}と書いてみると、いきなり生年月日選択フォームができあがります。

後は適当にオプションを突っ込めば面倒な日付選択フォームがあっさり完成します。

html_select_date.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
    
    //Smarty
        require_once('./../smarty/libs/Smarty.php');
    
    //取得した日時
        $request_datetime=mktime(
             $_REQUEST['Time_Hour']
            ,$_REQUEST['Time_Minute']
            ,$_REQUEST['Time_Second']
            ,$_REQUEST['Date_Month']
            ,$_REQUEST['Date_Day']
            ,$_REQUEST['Date_Year']
        );
        $smarty->assign('request_datetime',$request_datetime);
    
    //表示
        $smarty->display('html_select_date.html');

html_select_date.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html><body>
  
<form method="POST" action="html_select_date.php">
    {html_select_date field_order='Y' 
        start_year='-10' end_year='+10' time=$request_date}年
    {html_select_date field_order='M'
        month_format='%m' time=$request_date}月
    {html_select_date field_order='D'
        time=$request_date}日
    
    {html_select_time display_hours=true  
        display_minutes=false display_seconds=false time=$request_date}時
    {html_select_time display_hours=false 
        display_minutes=true  display_seconds=false time=$request_date}分
    {html_select_time display_hours=false
        display_minutes=false display_seconds=true  time=$request_date}秒
    
    <input type="submit" value="送信">
</form>
 
</body></html>

実行するとこのようなフォームが現れます。
秒  

問題点としては、フィールドの区切りに任意の値を設定できないので、YYYY年MM月DD日みたいなフォーマットを作るには、上記のように<select>単位で区切らなければなりません。
しかし、うんざりするほど長大な<select><option>を書くことや(ここのソースを見てみましょう)、{foreach}なんかでややこしいループを書くことに比べれば、圧倒的に楽です。
しかし{html_select_date}と{html_select_time}のオプションが何故か違うとか、month_formatとday_formatはあるのにyaer_formatは無いとか、なんか微妙に気持ち悪い仕様なのはどうにかならないんでしょうか。

 

PR


2009/07/24 19:29 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Smarty-06:カスタム関数 | HOME | JavaScript?2-10:CSSで訪問履歴を取得>>
忍者ブログ[PR]