7

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

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';
    }

}

我尝试在 home.blade.php 中创建一个对象。

$level = new HomeController;
$level->showLevel(Auth::user->username);

但这似乎不起作用。你可以在刀片中传递物体吗?我一直在尝试自己查找此内容,但也许我的措辞是错误的。我被困住了!

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

4

3 回答 3

8

是的,您可以将对象传递给刀片。您使用 compact 方法来实现:

return view('home')->with(compact('users'));

在您的刀片中,您可以像这样访问用户:

@if ($users)
   @foreach($users as $user)
      {{ $user->name }}
   @endforeach
@endif
于 2015-06-27T16:20:27.050 回答
4

尝试这样的事情:

use Auth;
$level = new HomeController();
$data = $level->showLevel(Auth::user()->username);

和返回刀片::

 return view('home')->with(['data'=>$data]);

现在,在您的刀片中,您可以使用 $data

于 2015-06-27T16:25:10.180 回答
1
return view('home', compact('users'));

比你可以在你的blade.php上foreach它

于 2017-01-17T10:11:23.027 回答