web-dev-qa-db-ja.com

php Laravel 5でカスタムヘルパー関数を作成するためのベストプラクティスは何ですか?

私が持っています

デフォルトのcreated_at日付は、MySQL形式で出力され続けます:2015-06-12 09:01:26。 12/2/2017のような独自の方法で印刷したかったのですが、将来的には他の形式でも使用できるようになりました。


私は造った

DataHelper.phpという名前のファイルを/app/Helpers/DateHelper.phpに保存します-このようになります

<?php

namespace App\Helpers;

class DateHelper {

    public static function dateFormat1($date) {
        if ($date) {
            $dt = new DateTime($date);

        return $dt->format("m/d/y"); // 10/27/2014
      }
   }
}

が欲しいです

私のブレードビューでそれを呼び出すことができるように

DateHelper::dateFormat1($user->created_at)

次に何をしたらよいかわかりません。

phpでカスタムヘルパー関数を作成するためのベストプラクティスは何ですかLaravel 5?

18
cyber8200
  1. app/Httpディレクトリ内にhelpers.phpファイルを作成し、関数を追加します。
  2. composer.json内のautoloadブロックに、"files": ["app/Http/helpers.php"]を追加します。
  3. composer dump-autoloadを実行します

それでうまくいくはずです。 :)

17
cyber8200

ヘルパーメソッドは静的なので、次のように、Facadeのようにヘルパークラスをconfig/appエイリアスに追加できます。

'aliases' => [
    //'dateHelper'=> 'App\Helpers\DateHelper', //for Laravel 5.0
    'dateHelper'=> App\Helpers\DateHelper::class, //for Laravel 5.1
] 

その後、あなたの見解では:

{{dateHelper::dateFormat1($user->created_at)}}

ただし、ヘルパークラスなしでこれを行う方法も探している場合。モデルでミューテーターとアペンドを使用することを検討できます。

class User extends Model{
   protected $fillable = [
     'date'
   ];

   protected $appends = [
     'date_format_two'
   ];


   public function getDateAttribute($value){
        $dt = new DateTime($value);
        return $dt->format("m/d/y"); // 10/27/2014
   }

    //date
    public function getDateFormatTwoAttribute($value){
        $dt = new DateTime($value);
        return $this->attributes['date_format_two'] = $dt->format("m, d ,y"); // 10,27,2014
    }
} 

後でできる

$user = User::find(1);

{{$user->date}}; 
{{$user->date_format_two}}; 
13
Emeka Mbah