Closed afbora closed 2 years ago
$page->price()
has to be a Field
. I assume your $page->price()
returns a float
?
The price method of your product model should look something like this.
// site/models/product.php
class ProductPage extends Page {
// …
public function price(): \Kirby\Cms\Field
{
$price = 999.99;
return new \Kirby\Cms\Field($this, 'price', $price);
}
// …
}
Incidentally, I'm working on an improvement to this right now. In a future update floats will be allowed for $page->price()
, but for now you have to return a field.
No, I'm using Field
but I've no price
field in product.yml
. In my application: price = number of items in the package * unit price
. So I've to use custom price method.
public function price()
{
return new Field($this, 'number', (float)($this->unitPrice()->float() * $this->inPackage()->int()));
}
You can try to change the second parameter of field from number
to price
.
public function price()
{
return new Field($this, 'price', (float)($this->unitPrice()->float() * $this->inPackage()->int()));
}
No luck.. ->exists()
method checks the parent ->content()
method and results:
$page->price(); // 1490
$page->content(); // No exists price field in content
Okay, this is a bug and needs further testing.
A quick solution could be to use two arguments with the $cart->add()
method to avoid the ->exists()
method.
$cart->add('nice-shoes', []);
Hey @afbora,
I removed the price check for product pages. This should solve your problem. You can try it with 1.6.0-beta.2.
Getting following error when you use calculated price on product models.
https://github.com/wagnerwagner/merx/blob/master/src/Cart.php#L47
Can be use
isNotEmpty()
method instead ofexists()