如何使用Traits - Laravel 5.2

时间:2016-04-15 22:08:19

标签: php laravel laravel-5.2 traits

我是Traits的新手,但是我的函数中有很多重复的代码,我想使用Traits来减少代码的混乱。我在Traits目录中创建了一个名为Http的特征的BrandsTrait.php目录。它所做的只是呼吁所有品牌。但是当我尝试在我的产品控制器中调用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();
    }
}

2 个答案:

答案 0 :(得分:37)

考虑一些特征,比如在不同的地方定义一个类的一部分,可以由许多类共享。通过在您的班级中放置use BrandsTrait,它就会包含该部分。

你想写的是

$brands = $this->brandsAll();

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

另外 - 不要忘记在brandsAll方法中添加回复!

答案 1 :(得分:3)

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