【问题标题】:How to call class method inside a Laravel view?如何在 Laravel 视图中调用类方法?
【发布时间】:2016-07-26 01:49:34
【问题描述】:

我正在尝试找到一种方法来从刀片文件中的类文件中调用方法。 foo() 使用来自 foreach 循环的 $item 变量。因为我在刀片文件中循环,所以我不能,或者更确切地说,这是一种不好的做法,在视图中调用控制器方法,或者我听说过。

我的控制器

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

由于$item是在foreach(视图内部)中生成的,我不知道如何调用方法之前它在return语句中传递给视图。

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

    控制器:

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

    【讨论】:

    • 太好了。如果要引用一个包含类的帮助文件呢?假设@App\Helpers\Helper.php
    • 如果我理解正确:只需实例化类并与视图共享:$helper = new \App\Helpers\Helper(); ...返回视图('view', ['helper' => $helper]);
    猜你喜欢
    • 2018-08-22
    • 2019-07-20
    • 2015-12-18
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    相关资源
    最近更新 更多