30 votes

Comment utiliser les traits - Laravel 5.2

Je suis nouveau sur des Traits de, mais j'ai beaucoup de code qui se répète dans mes fonctions, et je veux utiliser les Traits de rendre le code moins salissant. J'ai fait un Traits répertoire dans mon Http répertoire avec un Trait appelés BrandsTrait.php. Et il fait appel à toutes les Marques. Mais quand j'essaie d'appeler BrandsTrait dans mon Contrôleur des Produits, comme ceci:

use App\Http\Traits\BrandsTrait;

class ProductsController extends Controller {

    use BrandsTrait;

    public function addProduct() {

        //$brands = Brand::all();

        $brands = $this->BrandsTrait();

        return view('admin.product.add', compact('brands'));
    }
}

il me donne un message d'erreur indiquant que la Méthode [BrandsTrait] n'existe pas. Suis-je suppose que pour initialiser quelque chose, ou de l'appeler différemment?

Voici mon BrandsTrait.php

<?php
namespace App\Http\Traits;

use App\Brand;

trait BrandsTrait {
    public function brandsAll() {
        // Get all the brands from the Brands Table.
        Brand::all();
    }
}

38voto

Scopey Points 5538

Pensez à des traits comme définir une section de votre classe dans un endroit différent qui peut être partagé par de nombreuses classes. En plaçant use BrandsTrait dans votre classe, il a cette section.

Ce que tu veux écrire c'est

 $brands = $this->brandsAll();
 

C'est le nom de la méthode dans votre trait.

N'oubliez pas non plus d'ajouter un retour à votre méthode brandsAll !

3voto

use App\Http\Traits\BrandsTrait;

class ProductsController extends Controller {

    use BrandsTrait;

    public function addProduct() {

        //$brands = Brand::all();

        $brands = $this->brandsAll();

        return view('admin.product.add', compact('brands'));
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X