web-dev-qa-db-fra.com

Comment utiliser les traits - Laravel 5.2

Je suis nouveau dans Traits, mais j'ai beaucoup de code qui se répète dans mes fonctions, et je veux utiliser Traits pour rendre le code moins compliqué. J'ai créé un répertoire Traits dans mon répertoire Http avec un trait appelé BrandsTrait.php. Et tout ce qu'il fait, c'est faire appel à toutes les marques. Mais quand j'essaie d'appeler BrandsTrait dans mon contrôleur de 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'));
    }
}

cela me donne une erreur disant la méthode [BrandsTrait] n'existe pas. Suis-je supposé initialiser quelque chose, ou 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();
    }
}
29
David

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!

37
Scopey
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'));
    }
}
3
Sonford Son Onyango