CakePHP修行 Archive
途中経過(CakePHP修行 #11)
- 2008-09-08 (月)
- CakePHP修行
久々の更新です。ネタがありませんが・・・。

継続するって難しい…。
1週間に2,3つのクオリティの高いエントリーを投稿し続けるαブロガーってやっぱ凄いですね。
- コメント (Close): 0
- トラックバック (Close): 0
DB日付値を任意のフォーマットで取得するコンポーネント(CakePHP修行 #10)
- 2008-08-13 (水)
- CakePHP修行
カレンダー・スケジュールに関するアプリを作っている関係上、どうしても日付に関する処理が多くなってしまいます。
DBに保存した日付値を任意のフォーマットに変換してくれるコンポーネントやヘルパーがデフォルトで用意されていないか探してみたのですが見つからない…。
多分、Timeヘルパーあたりにあると思うのですが、ヘルパーだとController内で使用することが出来ないので「DatetimeComponent」なるコンポーネントを自作してみました。
componentsフォルダにdatetime.phpファイルを作成し、下記のソースをコピペ。
・app/controllers/components/datetime.php
<?php
class DatetimeComponent extends Object
{
var $controller = null;
function __construct(){
parent::__construct();
}
function startup(&amp;$controller){
$this->controller =&amp; $controller;
}
function toFormat($elem, $format){
//2008-02-27 00:00:00
$set_year = substr($elem, 0, 4); //年
$set_month = substr($elem, 5, 2); //月
$set_day = substr($elem, 8, 2); //日
$set_hour = substr($elem, 11, 2); //時
$set_minute = substr($elem, 14, 2); //分
$set_second = substr($elem, 17, 2); //秒
return date($format, mktime($set_hour, $set_minute, $set_second, $set_month, $set_day, $set_year));
}
}
?>
フォーマットの指定はPHPの標準関数であるDate関数と同じ形式です。
↓こんな感じで使用します。
$yyyy_m_d = $this->Datetime->toFormat($this->data['Schedule']['start'],'Y/n/j');
登録したスケジュールをカレンダーに表示(CakePHP修行 #9)
- 2008-07-27 (日)
- CakePHP修行
今回はカレンダーページ上に、登録したスケジュールのタイトルを表示する処理を実装します。
コントローラーのCalendarアクションを変更します。
・app/controllers/schedules_controller.php
//calendar
function calendar($year = null, $month = null){
//システムメッセージをセット
$this->set('sys_msg', $this->Session->read('sys_msg'));
$this->Session->delete('sys_msg');
//指定された年月を取得/指定なしの場合はシステム日付を取得
if($year == null || $month == null){
$Month = new Calendar_Month_Weekdays( date('Y'), date('m'), 0 );
$year = date('Y');
$month = date('m');
} else {
$Month = new Calendar_Month_Weekdays( $year, $month, 0 );
}
//PEARよりカレンダー情報を読み込み
$Month->build();
$this->set('month', $Month);
//取得した年月、次月、前月をYYYY/MM形式で変数にセット
$this->set('next_year_month', date("Y/m", mktime(0, 0, 0, $month+1, 1, $year)));
$this->set('this_year_month', date("Y/m", mktime(0, 0, 0, $month, 1, $year)));
$this->set('prev_year_month', date("Y/m", mktime(0, 0, 0, $month-1, 1, $year)));
//取得した年月のスケジュール情報をScheduleから取得
$cond = array(
'AND' => array(
array("Schedule.start" => ">=$year-$month-01")
,array("Schedule.start" => "< =$year-$month-31")
)
);
$this->set('schedules', $this->Schedule->findAll($cond));
}
- 検索
- フィード
- メタ
- お城
-