Ash*_*own 1 php for-loop laravel blade laravel-5
我正在尝试找到一种方法从刀片文件中的类文件中调用方法.foo()使用$itemforeach循环中的变量.由于我在刀片文件中循环,我无法或者更确切地说,在视图中调用控制器方法是不好的做法,或者我听说过.
myController的
public function getData() {
$data = DB::paginate(10);
return view('view', ['data' => $data]);
}
public function foo($var) {
//do something with $var
return $var
}
Run Code Online (Sandbox Code Playgroud)
view.blade.php
@foreach ($data as $item)
<td>{{$item->key}}</td>
<td>{{ //myController::foo($item) is Essentially the output I need }} </td>
@endforeach
Run Code Online (Sandbox Code Playgroud)
由于$item是在foreach(在视图内部)生成的,所以我不知道如何在返回语句之前调用方法.
有什么建议?
只需与您的视图共享您的控制器:
控制器:
public function getData() {
$data = DB::paginate(10);
return view('view', [
'data' => $data,
'controller' => $this,
]);
}
Run Code Online (Sandbox Code Playgroud)
视图:
@foreach ($data as $item)
<td>{{$item->key}}</td>
<td>{{ $controller->foo($item) }} </td>
@endforeach
Run Code Online (Sandbox Code Playgroud)
更好的方法是在控制器中生成输出:
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,
]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5209 次 |
| 最近记录: |