为什么在模板中调用带括号的方法会导致错误,但是没有不这样做?那我怎么传递一个参数?
错误:
Call to undefined method Illuminate\Database\Query\Builder::test()
index.blade.php
...
<p class="product-price-old"><s>{{ $product->test("123") }}</s></p>
...
Product.php
...
public function getTestAttribute($value)
{
return $value;
}
...
但如果我做这样的事情就可以了:
index.blade.php
...
<p class="product-price-old"><s>{{ $product->test }}</s></p>
...
Product.php
...
public function getTestAttribute()
{
return "123";
}
...
答案 0 :(得分:2)
如果要将一个Product.php实例(应该是数据库中产品表的模型)分配给刀片变量,并且您的Product表有一个名为“test”的列,那么您只是打印模型中的值和Product.php的实例中没有test()方法。您只需检索test
属性的值。
如果要将参数传递给模型中的函数,请为函数使用其他名称。您无法将参数传递给Laravel中的accessor
。
答案 1 :(得分:1)
void AccelerometerMove()
{
float x = Input.acceleration.x;
Debug.Log("X = " + x);
if (x < -0.1f)
{
MoveLeft();
}
else if (x > 0.1f)
{
MoveRight();
}
else
{
SetVelocityZero();
}
}
public void SetVelocityZero()
{
rb.velocity = Vector2.zero;
}
public void MoveLeft()
{
rb.velocity = new Vector2( Mathf.Lerp( rb.velocity.x, -speed, Time.deltaTime ), 0);
transform.eulerAngles = new Vector2(0, 180);
}
public void MoveRight()
{
rb.velocity = new Vector2( Mathf.Lerp( rb.velocity.x, speed, Time.deltaTime ), 0);
transform.eulerAngles = new Vector2(0, 0);
}
是accessor,所以它不是真正的功能。它反过来展示了如何获得模型的属性。
这就是你应该使用getTestAttribute方法的原因:
getTestAttribute