LoginSignup
5
6

More than 5 years have passed since last update.

PhalconのVoltでデータベースのdatetime型などを整形して表示したい

Last updated at Posted at 2015-07-08

データベースから値を取ってきて、そのままviewへ入れた時、datetime型などの表示を整形(YYYY年MM月DD日みたいな感じ)して表示したい時がしばしばあります。
そんな時にうまい方法がないかと考えて、思いついたのでメモしときます。

コントローラで取得した値をviewに放り込む

ちょっと乱暴ですが概ねこんな感じでviewに入れますよね。

AnythingController.php
$this->view->items = Item::find();

イマイチコード

毎回以下のようにやってました。
しかし、面倒だし見た目が良くないので何とかしたいと思いました。

イマイチその1@model内
// 不要な時もやってしまうし、余計な値を毎回入れたくない
public function afterFetch()
{
    $this->updated_at_timestamp = strtotime($this->updated_at);
}
イマイチその2@volt内
// 表示するだけに2行必要だし、volt内にPHPコード入れるのはどうかと
<?php $time = strtotime($data->updated_at); ?>
{{ date('Y年m月d日', time) }}
イマイチその3@volt内
// volt内にPHPコード入れるのはどうかと
<?php echo date('Y年m月d日', strtotime($data->updated_at); ?>

結論

色々考えた挙句、単純にフィルタにstrtotimeを追加してみました。

services.php抜粋
$volt = new VoltEngine($view, $di);
// strtotimeフィルタ追加
$volt->getCompiler()->addFilter('strtotime', 'strtotime');
anything.volt
{{ date('Y年m月d日', data.updated_at | strtotime) }}

期待通りでスッキリしました。
以上です。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6