Подтвердить что ты не робот

Какова наилучшая практика создания пользовательской вспомогательной функции в 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?

4b9b3361

Ответ 1

  • В вашем каталоге app/Http создайте файл helpers.php и добавьте свои функции.
  • В composer.json в блоке autoload добавьте "files": ["app/Http/helpers.php"].
  • Выполнить composer dump-autoload

Это должно сделать это.:)

Ответ 2

Поскольку ваш метод Helper статичен, вы можете добавить свой вспомогательный класс к псевдониму config/app точно так же, как и к Facade, например:

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

Затем на ваш взгляд:

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

Однако, если вы также ищете способ сделать это без вспомогательного класса. Вы можете использовать Mutators и Append в своей модели:

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}};