我是Traits的新手,但是我的函数中有很多重复的代码,并且我想使用Traits来减少代码的困惑度。我已经在Traits目录中创建了一个Http目录,并具有一个名为BrandsTrait.php的特质。它所做的就是呼吁所有品牌。但是,当我尝试在我的产品 Controller 中调用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放在您的类中,它具有该部分。

你想写的是

$brands = $this->brandsAll();

那就是您特质中方法的名称。

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

07-27 19:50