如何使用特征 - Laravel 5.2

2022-08-30 14:56:14

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

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

答案 1

想想一些特征,比如在不同的地方定义你的班级的一个部分,这个部分可以由许多班级共享。通过放在你的类中,它具有该部分。use BrandsTrait

你想写的是

$brands = $this->brandsAll();

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

另外 - 不要忘记为您的方法添加一个返回!brandsAll


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

推荐