如何在Laravel视图中调用类方法?

时间:2016-04-05 22:06:15

标签: php laravel for-loop laravel-5 blade

我正在尝试从刀片文件中的类文件中调用方法。 std::stoi()使用foreach循环中的struct MyData { int num1; int num2; std::string color; friend std::ostream& operator << (std::ostream& os, const MyData& d); friend std::istream& operator >> (std::istream& os, const MyData& d); }; 变量。由于我在刀片文件中循环,我无法或者更确切地说,在视图中调用控制器方法是不好的做法,或者我听说过。

MyController

...
MyData tmp; 
outfile << tmp; 
vData.push_back(tmp);
...

view.blade.php

foo()

由于$item(在视图内)生成了public function getData() { $data = DB::paginate(10); return view('view', ['data' => $data]); } public function foo($var) { //do something with $var return $var } ,我不知道如何将之前的方法调用到该视图中退货声明。

有什么建议吗?

1 个答案:

答案 0 :(得分:7)

只需与您的视图共享您的控制器:

控制器:

public function getData() {
    $data = DB::paginate(10);

    return view('view', [
        'data' => $data, 
        'controller' => $this,
    ]);
}

查看:

@foreach ($data as $item)

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

@endforeach

更好的方法是在控制器中生成输出:

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,
    ]);
}