我是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();
}
}
答案 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'));
}
}