2016-12-09 19 views
0

私は2つの日付の差を返す関数を持っています
日付はデータベースから生成されるので、この関数を呼び出す必要があるレコードが複数あることがあります。laravelのビューから関数を呼び出す方が良い

function dateDifference($date_1 , $date_2 , $differenceFormat = '%y Year %m Month') 
    { 
    $datetime1 = date_create($date_1); 
    $datetime2 = date_create($date_2); 

    $interval = date_diff($datetime1, $datetime2); 

    return $interval->format($differenceFormat); 
    } 

ここでは、ページ内に複数の日付の違いがある可能性があるため、この関数をビューから呼び出す必要があります。 そして、ロジックをビューに保持することはあまり専門的ではありません。

+0

も私も、この問題に対するこの解決策を見つけました。コントローラー: '戻りビュー( 'viewpage'、['controller' => $ this]); ' これは、コントローラーのオブジェクトを送信し、それを使用して関数を呼び出します。 View: '$ controller-> dateDifference($ date1、$ date2);' これはビューから関数を呼び出すより良い方法であるかどうかまだ分かりません – Regolith

答えて

1

私の理解によれば、あなたはあなたのビューで反復しているコレクション/配列を持っているので、私の提案はコントローラのすべてのロジックを操作し、その操作したデータをこれは:

$data = collect([...array...]); // This is your data which you can get from DB 
$manipulatedData = $data->mapWithKeys(function ($item) { 
    return [$item['dateDiff'] => dateDifference($item['date1'], $item['date2'])]; // Use your method here 
}); 

とIn:あなたのコントローラで

私はコレクションとして、あなたのデータを取っている、あなたは、このようなあなたの現在のデータにデータを追加するために、コレクションのmapWithKeys方法を使用することができますその表示:

@foreach($manipulatedData as $data) 
    <div>{{ $data->dateDiff }}</div> 
@endforeach 

希望します。

1

ヘルパークラスを作成し、アプリに登録/設定/ app.phpエイリアスとして

例:/ app.php

'aliases' => [ 
... 
    'Frontend' => 'App\Service\FrontendService' 
    ], 

そしてビューの設定で

<?php 
namespace app\Service; 

use Illuminate\Support\Facades\Config; 
use Poznet\PPAL\Helpers\Slider; 
use Poznet\PPAL\Models\Config as Konfig; 
use Illuminate\Support\Facades\Cache; 

class FrontendService 
{ 
    public static function Config($name){ 
    // put your logic here as foo :) 

     return $foo; 
    } 
} 

あなたは使用できます

{{ Frontend::config('foo') }} 
1

あなたはようCarbonのインスタンスでのあなたの日付列を変換するためにDate Mutatorsを使用することができます。

<?php 

namespace App; 
use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    /** 
    * The attributes that should be mutated to dates. 
    * 
    * @var array 
    */ 
    protected $dates = [ 
     'date_1', 
     'date_2' 
    ]; 
} 

そして、あなたのようにあなたのビューでそれを使用することができます。

$date_1->diff(date_2)->format('%y Year %m Month') 
関連する問題