Fondamentalement, j'ai une simple colonne 'exp' dans ma base de données et je veux utiliser une fonction 'showLevel ()' où je peux passer Auth::user->username
en tant qu'argument au lieu d'un nom statique. Je ne sais pas comment utiliser une fonction dans un écho de mon modèle ou avec un objet.
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';
}
}
J'ai essayé de créer un objet dans home.blade.php.
$level = new HomeController;
$level->showLevel(Auth::user->username);
Mais cela n'a pas semblé fonctionner. Pouvez-vous passer des objets dans la lame? J'ai essayé de regarder cela moi-même, mais peut-être que je le formule mal. Je suis coincé!
Je veux fondamentalement pouvoir faire quelque chose comme {{ showLevel(Auth::user->username); }}
dans mon home.blade.php pour faire écho au niveau renvoyé par la fonction.
Essayez quelque chose comme ça:
use Auth;
$level = new HomeController();
$data = $level->showLevel(Auth::user()->username);
et retour lame ::
return view('home')->with(['data'=>$data]);
Maintenant, dans votre lame, vous pouvez utiliser des données $
Oui, vous pouvez transmettre un objet à la lame. Vous utilisez la méthode compacte pour y parvenir:
return view('home')->with(compact('users'));
Dans votre lame, vous pouvez accéder aux utilisateurs comme ceci:
@if ($users)
@foreach($users as $user)
{{ $user->name }}
@endforeach
@endif
return view('home', compact('users'));
que vous pouvez le trouver sur votre blade.php