Laravel - 通过视图传递 object 并在 blade 中使用
Laravel - Pass object through view and use in blade
基本上,我的数据库中有一个简单的 'exp' 列,我想使用一个函数 'showLevel()',我可以在其中传入 Auth::user->username
作为参数而不是静态参数名称。我正在努力解决如何在模板的回显中使用函数或使用 object.
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 中创建一个 object。
$level = new HomeController;
$level->showLevel(Auth::user->username);
但这似乎没有用。你能在 blade 中传递 objects 吗?我一直在尝试自己查找,但也许我的措辞有误。我卡住了!
我基本上希望能够在我的 home.blade.php 中执行类似 {{ showLevel(Auth::user->username); }}
的操作,以回应从函数返回的级别。
是的,您可以将 object 传递给 blade。您使用紧凑的方法来实现:
return view('home')->with(compact('users'));
在您的 blade 中,您可以这样访问用户:
@if ($users)
@foreach($users as $user)
{{ $user->name }}
@endforeach
@endif
尝试这样的事情:
use Auth;
$level = new HomeController();
$data = $level->showLevel(Auth::user()->username);
和Return Blade::
return view('home')->with(['data'=>$data]);
现在,您可以在 Blade 中使用 $data
return view('home', compact('users'));
你无法在 blade.php
上进行 foreach
基本上,我的数据库中有一个简单的 'exp' 列,我想使用一个函数 'showLevel()',我可以在其中传入 Auth::user->username
作为参数而不是静态参数名称。我正在努力解决如何在模板的回显中使用函数或使用 object.
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 中创建一个 object。
$level = new HomeController;
$level->showLevel(Auth::user->username);
但这似乎没有用。你能在 blade 中传递 objects 吗?我一直在尝试自己查找,但也许我的措辞有误。我卡住了!
我基本上希望能够在我的 home.blade.php 中执行类似 {{ showLevel(Auth::user->username); }}
的操作,以回应从函数返回的级别。
是的,您可以将 object 传递给 blade。您使用紧凑的方法来实现:
return view('home')->with(compact('users'));
在您的 blade 中,您可以这样访问用户:
@if ($users)
@foreach($users as $user)
{{ $user->name }}
@endforeach
@endif
尝试这样的事情:
use Auth;
$level = new HomeController();
$data = $level->showLevel(Auth::user()->username);
和Return Blade::
return view('home')->with(['data'=>$data]);
现在,您可以在 Blade 中使用 $data
return view('home', compact('users'));
你无法在 blade.php
上进行 foreach