私はTraitsを初めて使用しますが、関数内で繰り返し使用するコードがたくさんあるため、Traitsを使用してコードを煩雑にしないようにします。 Traits
ディレクトリにHttp
ディレクトリを作成し、BrandsTrait.php
。そして、それはすべてのブランドを呼び出すことです。しかし、次のように、Products 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'));
}
}
Method [BrandsTrait] is not exist。というエラーが表示されます。==何かを初期化するか、別の方法で呼び出すと思いますか?
これが私の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();
}
}
多くのクラスで共有できる別の場所でクラスのセクションを定義するような特性を考えてください。配置することにより use BrandsTrait
クラスにはそのセクションがあります。
あなたが書きたいのは
$brands = $this->brandsAll();
それはあなたの特性のメソッドの名前です。
また、brandsAll
メソッドに戻り値を追加することを忘れないでください!
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'));
}
}