Laravel 5.2在刀片中使用变量的正确方法

时间:2016-03-22 05:56:14

标签: php templates variables blade laravel-5.2

所以我知道通过控制器传递变量,例如,如果它是一个查询数组我会做

public function index()
{
    $query = Request::get('q');
    if ($query) {
        $users = User::where('username', 'LIKE', "%$query%")->get();
    }

    return view('view', compact('users'));
}

当我在刀片上时,我会做

 @if( ! empty($users))     
    @foreach($users as $user)
        {{ $user->username }}
    @endforeach
 @endif

现在我的问题是如何使用foreach中的变量设置变量?目前我在刀片模板文件中使用PHP,但我觉得这很麻烦,这就是我所拥有的

@if( ! empty($users))     
    @foreach($users as $user)
     <?php 
        $lastOnline = \Carbon\Carbon::createFromTimeStamp(strtotime($user->last_online))->diffForHumans();
        $fiveMinsAgo = \Carbon\Carbon::now()->subMinute(5);
     ?>
        {{ $user->username }}
        @if ($user->last_online <= $fiveMinsAgo)
            {{ $lastOnline }}
        @else 
            Online Now
        @endif
    @endforeach
@endif

1 个答案:

答案 0 :(得分:0)

如果有其他人在寻找它,我找到了解决问题的方法。

public function getLastOnlineAttribute($value)
{
    $fiveMinsAgo = \Carbon\Carbon::now()->subMinute(5);
    $thirtMinsAgo = \Carbon\Carbon::now()->subMinute(30);
    $lastOnline = \Carbon\Carbon::createFromTimeStamp(strtotime($value))->diffForHumans();
    if ($value <= $fiveMinsAgo) {
        echo 'Last Active: '.$lastOnline.'';
    }
    else {
        echo 'Online Now';
    }

}

基本上将此添加到您的变量模型中(例如,如果它是$ user-&gt; last_online它将进入用户模型),如果您一直在寻找更多信息,它被称为雄辩的变异器,{{ 3}}

它抓取变量的数据,例如{{$ user-&gt; last_online}}

请注意,Underscore在函数名称中转换为CamelCase,输出设置为$ value,然后您可以在函数内部设置变量并按照您的意愿模拟输出,然后在刀片中可以摆脱所有额外的废话,只需使用{{$ user-&gt; last_online}}