Php Laravel-通过视图传递对象并在刀片中使用

Php Laravel-通过视图传递对象并在刀片中使用,php,laravel,laravel-blade,Php,Laravel,Laravel Blade,基本上,我的数据库中有一个简单的“exp”列,我想使用函数“showLevel()”,在这里我可以传入Auth::user->username作为参数,而不是静态名称。我正在努力解决如何在模板上的回显中使用函数或与对象一起使用 public function index() { $users = User::all(); $level = $this->showLevel('test'); return view('home')->with('users'

基本上,我的数据库中有一个简单的“exp”列,我想使用函数“showLevel()”,在这里我可以传入
Auth::user->username
作为参数,而不是静态名称。我正在努力解决如何在模板上的回显中使用函数或与对象一起使用

public function index()
{
    $users = User::all();

    $level = $this->showLevel('test');

    return view('home')->with('users', $users)->with('showLevel', $level);
}

public function showLevel($username) {

    $level = DB::table('users')->where('username', $username)->pluck('exp');

    if ($level < 500) {
        return 1;
    } else if ($level > 500 && $level < 1000) {
        return 2;
    } else if ($level > 1000 && $level < 1500) {
        return 3;
    } else if ($level > 1500 && $level < 2000) {
        return 4;
    } else if ($level > 2000 && $level < 2500) {
        return 5;
    } else if ($level > 2500) {
        return 'MAX';
    }

}
但这似乎不起作用。你们能用刀片传递物体吗?我一直想自己查一下,但也许我用词不对。我卡住了


我基本上希望能够在my home.blade.php中执行类似于
{{showLevel(Auth::user->username);}}
的操作,以响应函数返回的级别。

是的,您可以将对象传递给blade。您可以使用压缩方法来实现以下目标:

return view('home')->with(compact('users'));
在刀片服务器中,您可以访问以下用户:

@if ($users)
   @foreach($users as $user)
      {{ $user->name }}
   @endforeach
@endif
use Auth;
$level = new HomeController();
$data = $level->showLevel(Auth::user()->username);

试着这样做:

@if ($users)
   @foreach($users as $user)
      {{ $user->name }}
   @endforeach
@endif
use Auth;
$level = new HomeController();
$data = $level->showLevel(Auth::user()->username);
和返回刀片::

 return view('home')->with(['data'=>$data]);
现在,在刀片中,您可以使用$data

return view('home', compact('users'));

你可以在你的blade上使用它。php

我会在用户模型上这样设置级别:尝试后,我得到了“Class'App\Http\Controllers\Auth'not found”,我不是在继承我的类吗?啊,duh!但是现在当我尝试使用{{$data}}时,我得到了一个定义不足的变量。这不是blade中的{{}吗?附和声明?编辑:没关系!我完全照搬了你的,而你有[]个方括号!