2017-04-02 5 views
0

テンプレート内に括弧を含むメソッドを呼び出すと、エラーが発生するのはなぜですか?どのようにパラメータを渡すのですか?Laravel:なぜこのエラーが発生するのですか?未定義のメソッドを呼び出すのはなぜですか?

エラー:

... 
<p class="product-price-old"><s>{{ $product->test("123") }}</s></p> 
... 

index.blade.php

Call to undefined method Illuminate\Database\Query\Builder::test() 

Product.php

... 
public function getTestAttribute($value) 
{ 
    return $value; 
} 
... 

が、私はこのような何かをすれば、それは正常に動作します:

index.blade.php

... 
<p class="product-price-old"><s>{{ $product->test }}</s></p> 
... 

Product.phpあなたが(データベース内の製品テーブルのモデルでなければなりません)Product.phpのインスタンスを割り当てる場合

... 
public function getTestAttribute() 
{ 
    return "123"; 
} 
... 

答えて

1

getTestAttributeaccessorです。実際の機能ではありません。モデルの属性を取得する方法を示します。

$product->test 
:なぜあなたが使用する必要がありgetTestAttribute方式のためだ

2

へブレード変数、Productテーブルに 'test'という列がある場合、その値をモデルから印刷するだけで、Product.phpのインスタンスにはtest()メソッドがありません。 test属性の値を取得することができます。

モデルの関数にパラメータを渡す場合は、関数に別の名前を使用します。 Laravelでパラメータをaccessorに渡すことはできません。

関連する問題