如何使用特征 - Laravel 5.2

How to use Traits - Laravel 5.2

我是 Traits 的新手,但我的函数中有很多重复的代码,我想使用 Traits 使代码不那么混乱。我在 Http 目录中创建了一个 Traits 目录,其中包含一个名为 BrandsTrait.php 的 Trait。它所做的只是呼吁所有品牌。但是当我尝试在我的产品控制器中调用 BrandsTrait 时,如下所示:

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'));
    }
}

它给我一个错误,提示 方法 [BrandsTrait] 不存在。 我应该初始化一些东西,还是以不同的方式调用它?

这是我的 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();
    }
}

想想特征,比如在不同的地方定义 class 的一部分,许多 class 可以共享。通过将 use BrandsTrait 放在您的 class 中,它具有该部分。

你要写的是

$brands = $this->brandsAll();

这是你特征中方法的名称。

此外 - 不要忘记在您的 brandsAll 方法中添加 return!

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'));
    }
}