web-dev-qa-db-fra.com

Laravel - Passer un objet à travers la vue et l’utiliser dans la lame

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.

6
Vaughan Slater

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 $

2
Nilesh

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
8
iep
return view('home', compact('users'));

que vous pouvez le trouver sur votre blade.php

1
Panda Zhang