SHIRANGANA LaravelCollective/Html Ver5.2 忍者ブログ
エンジニア日記
Admin / Write
×

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

いつもお世話になっているHtml, Formの生成ヘルパーである LaravelCollective/Html
Laravelのコアから外れた今でも、その利便性が褪せることはありません。

しかしながら、その機能の中で、今までどうしても不満に思っていた点がありました。
それは、Form Model Bindingをする時に
日付がCarbonである場合、テキスト出力される際にフォーマットが指定できず、
テキスト欄に強制的にY-m-d H:i:sと出てきてしまっていた点です。

なぜここだけこんなにも融通が利かないんだろう。
という印象を受けた人は一人ではないのではないかと思います。

私も、dateと datetimeメソッドをフォーマット指定が可能なように
拡張したクラスを作成しようか何度も迷っていました。

最近もまた、そんなことを考えていたところ!

Ver5.2から新機能が追加されてた。
FormModelBinding専用のアクセサが実装できるようです。

このように書くことができるようになります。(公式より抜粋)
https://laravelcollective.com/docs/5.2/html#form-model-accessors

namespace App;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the user's first name.
     *
     * @param  string  $value
     * @return string
     */
    public function getDateOfBirthAttribute($value)
    {
        return Carbon::parse($value)--->format('m/d/Y');
    }

    /**
     * Get the user's first name for forms.
     *
     * @param  string  $value
     * @return string
     */
    public function formDateOfBirthAttribute($value)
    {
        return Carbon::parse($value)->format('Y-m-d');
    }
}

formDateOfBirthAttribute が専用アクセサですね。
(getDateOfBirthAttributeはもともとあるEloquentのアクセサです)

まだ自由自在になりきったというところまではいかないものの、
普段使いで露骨に不足しない程度にはなってきたのではないかと思います。

ありがたいことです。

PR
この記事にコメントする
Name :
Title :
Mail :
URL :
Color :   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Comment :
Password :
HOME | 29  28  27  25  18  16  13  10  7  5 

忍者ブログ [PR]