2015-05-20 69 views
1

我想循環(警報)全局到我的看法。Laravel全局循環

所以我想要做這樣的事情在我看來:

@foreach($alert as $alert) 
<div class="alert alert-{{ $alert->type }}" role="alert">{{ $alert->message }}</div> 
@endforeach 

但是,當我做這裏面我BaseController

public function __construct() { 

     $get_alerts = Alert::orderBy('id', 'DESC')->whereNull('deleted_at')->get(); 
     foreach ($get_alerts as $alert) { 

      //make an array object of the alerts 
      $alert = array(); 
     } 

     return View::share('alert', $alert); 
    } 

{{ dd($alert) }}然後我得到這樣的輸出:array(0) { } 什麼是不是我想要的...

我該如何解決這個乾淨和良好的方式?

最親切的問候,

羅賓

回答

3

有你的代碼的幾個問題。這條線是最重要的:

$alert = array(); 

什麼你想說的是,「每一個結果$get_alerts,設置$alert爲空數組」。這就是爲什麼你得到輸出array(0) { } - 這是一個空陣列。

另一個大問題是這一行:

@foreach($alert as $alert) 

你應該在這裏使用兩個不同的變量名,因爲每次循環將指派東西$alert,這將覆蓋第一陣列,如果他們命名相同。典型和簡單的修復將簡單地爲:

@foreach($alerts as $alert) 

現在他們不會相互覆蓋。

您還有這部分方法鏈:->whereNull('deleted_at')。如果您使用軟刪除,您實際上不必這樣做,因爲Laravel會自動爲您刪除已刪除(「已刪除」)的項目。 (但是,如果你不使用軟刪除,你可以忽略這一段。)

而刀片的@foreach實際上在開箱即用的雄辯收藏。所以你的代碼可以清理很多,像這樣:

public function __construct() { 
    $alerts = Alert::orderBy('id', 'DESC')->whereNull('deleted_at')->get(); 
    return View::share('alerts', $alerts); 
} 

[...] 

@foreach($alerts as $alert) 
<div class="alert alert-{{ $alert->type }}" role="alert">{{ $alert->message }}</div> 
@endforeach 
+0

謝謝!這解決了我的問題! – Robin

+1

我很高興它幫助! –