基本的に、データベースに単純な「exp」列があり、静的な名前の代わりに引数として_Auth::user->username
_を渡すことができる関数「showLevel()」を使用したいと思います。テンプレートのエコーで関数を使用する方法、またはオブジェクトで関数を使用する方法に苦労しています。
_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);
_
しかし、それはうまくいかなかったようです。ブレードでオブジェクトを渡すことはできますか?私はこれを自分で調べようとしてきましたが、間違った言い方をしているのかもしれません。私は立ち往生しています!
基本的に、home.blade.phpで{{ showLevel(Auth::user->username); }}
のようなことを実行して、関数から返されるレベルをエコーできるようにしたいと考えています。
次のようなものを試してください。
use Auth;
$level = new HomeController();
$data = $level->showLevel(Auth::user()->username);
とリターンブレード::
return view('home')->with(['data'=>$data]);
これで、ブレードで$ dataを使用できます
はい、オブジェクトをブレードに渡すことができます。これを実現するには、コンパクトな方法を使用します。
return view('home')->with(compact('users'));
ブレードでは、次のようなユーザーにアクセスできます。
@if ($users)
@foreach($users as $user)
{{ $user->name }}
@endforeach
@endif
return view('home', compact('users'));
あなたがblade.phpでそれをforeachすることができるより