我是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
方法中添加返回值!