2016-04-05 22 views
1

Sınıf dosyasım içinde bir blade dosyasında bir yöntemi çağırmanın bir yolunu bulmaya çalışıyorum. foo(), foreach döngüsünden $item değişkenini kullanır. Blade dosyasında döngü yaptığım için yapamam, ya da daha ziyade, kötü bir uygulama, bir görünüm içinde bir denetleyici yöntemini çağırmak, ya da öyle duydum.Laravel görünümünde sınıf yöntemi nasıl çağırılır?

MyController $item yana

public function getData() { 
    $data = DB::paginate(10); 
    return view('view', ['data' => $data]); 
} 

public function foo($var) { 
//do something with $var 
return $var 
} 

view.blade.php

@foreach ($data as $item) 

<td>{{$item->key}}</td> 
<td>{{ //myController::foo($item) is Essentially the output I need }} </td> 

@endforeach 

(iç görünüm olan) foreach oluşturulur, daha önce yöntemini çağırmak nasıl bilmiyorum, dönüş ifadesindeki görünüme geçmiş.

Herhangi bir öneriniz var mı?

cevap

7

Sadece görünümü ile denetleyicisi paylaşan:

Denetleyici:

public function getData() { 
    $data = DB::paginate(10); 
    return view('view', ['data' => $data, 'controller' => $this]); 
} 

Görünüm:

@foreach ($data as $item) 

<td>{{$item->key}}</td> 
<td>{{ $controller->foo($item) }} </td> 

@endforeach 

daha iyi bir yol denetleyicisi çıkış oluşturmak için olacaktır:

public function getData() { 
    $data = DB::paginate(10); 
    $data = array_map(function($item) { 
     $item->output = $this->foo($item); 
     return $item; 
    }, $data); 
    return view('view', ['data' => $data]); 
} 
+0

Bu harika. İçinde bir sınıfa sahip olan bir yardımcı dosyaya başvurmak ne olurdu? @ 'App \ Helpers \ Helper.php' – ProEvilz

+1

diyelim Eğer doğru bir şekilde anlıyorsam: Sadece sınıfı hazırla ve görünüme paylaş: $ helper = new \ App \ Helpers \ Helper(); ... döndürme görünümü ('view', ['helper' => $ helper]); –

İlgili konular