如何使用特征 - Laravel 5.2
How to use Traits - Laravel 5.2
我是 Traits 的新手,但我的函数中有很多重复的代码,我想使用 Traits 使代码不那么混乱。我在 Http
目录中创建了一个 Traits
目录,其中包含一个名为 BrandsTrait.php
的 Trait。它所做的只是呼吁所有品牌。但是当我尝试在我的产品控制器中调用 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
放在您的 class 中,它具有该部分。
你要写的是
$brands = $this->brandsAll();
这是你特征中方法的名称。
此外 - 不要忘记在您的 brandsAll
方法中添加 return!
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'));
}
}
我是 Traits 的新手,但我的函数中有很多重复的代码,我想使用 Traits 使代码不那么混乱。我在 Http
目录中创建了一个 Traits
目录,其中包含一个名为 BrandsTrait.php
的 Trait。它所做的只是呼吁所有品牌。但是当我尝试在我的产品控制器中调用 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
放在您的 class 中,它具有该部分。
你要写的是
$brands = $this->brandsAll();
这是你特征中方法的名称。
此外 - 不要忘记在您的 brandsAll
方法中添加 return!
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'));
}
}