Bonjour;

J'aimerais savoir si c'était possible d'éviter la répétition du $user dans les deux méthodes car je l'appelle pour chaque méthode

index = page utilisateur

about = page information de l'utilisateur

Je vous remercie.

 /**
    * @param $username
    * @return \Illuminate\Contracts\View\View
    */
   public function index($username){
   $user = $this->user_repository->getFindAccount($username);
   return $this->view->make('user.index', compact('user'));
}

   /**
    * @param $username
    * @return \Illuminate\Contracts\View\View
    */
   public function about($username){
       $user = $this->user_repository->getFindAccount($username);
       return $this->view->make('user.pages.about', compact('user'));
   }

7 réponses


Salut,

Oui c'est possible avec les ViewComposer

https://laravel.com/docs/5.6/views#view-composers

SoBaDayz
Auteur

Salut,

Super ta réponse rapide et je vais regarder merci beaucoup.

SoBaDayz
Auteur

J'ai essayé ça marche super, mais quand je recherche un id qui n'existe pas il me renvoie plus une 404 mais un

No query results for model [App\User].

comment changer ça ? Je vous remercie

PS: J'utlise un firstOrFail

Méthode getFindAccount de mon repository:

public function getFindAccount($username) {
        return $this->user->newQuery()->where('username', $username)->firstOrFail();
    }

Bonjour SoBaDayz

Je te conseille de créer une fonction dans une class service ou meme dans le controller comme celui-ci

private function findUserByUsername(string $username){
    return $this->user_repository->getFindAccount($username);
}

Ensuite tu peux l'appeler comme celui-ci

 /**
    * @param $username
    * @return \Illuminate\Contracts\View\View
    */
   public function index($username){
   return $this->view->make('user.index', ["user"=>$this->findUserByUsername($usename)]);
}

   /**
    * @param $username
    * @return \Illuminate\Contracts\View\View
    */
   public function about($username){
       return $this->view->make('user.pages.about',["user"=>$this->findUserByUsername($usename)]);
   }
SoBaDayz
Auteur

Bonjour Kamar-Meddah,

Merci de ta réponse, c'est top !

Hello,

Tu peux aussi voir au niveau des scopes dans les models c'est pratique

C.F https://laravel.com/docs/5.6/eloquent#local-scopes

Bonjour SoBaDayz
de rien , ça fait un plaisir qu j'ai pu t'aider
:)