From c4df6a66ed123b2fc11f472f672fa38321ca2381 Mon Sep 17 00:00:00 2001
From: Bob den Otter
Date: Mon, 1 Jun 2020 10:53:48 +0200
Subject: [PATCH 1/2] Allow comparison for scalar fields
---
config/bolt/contenttypes.yaml | 5 ++---
src/Entity/Content.php | 3 ++-
src/Entity/Field/CheckboxField.php | 8 +++++++-
src/Entity/Field/DateField.php | 2 +-
src/Entity/Field/EmailField.php | 2 +-
src/Entity/Field/FloatField.php | 17 -----------------
src/Entity/Field/HiddenField.php | 2 +-
src/Entity/Field/IntegerField.php | 17 -----------------
src/Entity/Field/NumberField.php | 2 +-
src/Entity/Field/ScalarCastable.php | 12 ++++++++++++
src/Entity/Field/SlugField.php | 2 +-
templates/helpers/_field_blocks.twig | 2 +-
12 files changed, 29 insertions(+), 45 deletions(-)
delete mode 100644 src/Entity/Field/FloatField.php
delete mode 100644 src/Entity/Field/IntegerField.php
create mode 100644 src/Entity/Field/ScalarCastable.php
diff --git a/config/bolt/contenttypes.yaml b/config/bolt/contenttypes.yaml
index fe0d074b3..1ef5e0a3c 100644
--- a/config/bolt/contenttypes.yaml
+++ b/config/bolt/contenttypes.yaml
@@ -220,7 +220,7 @@ showcases:
integerfield:
type: number
mode: integer
- step: 0.25
+ step: 1
floatfield:
type: number
mode: float
@@ -415,8 +415,7 @@ tests:
# Possible field types:
#
# text - varchar(256) - input type text.
-# integer - integer - Input field for integer numbers.
-# float - double - Input field for floating numbers, stored as 'Double'.
+# number - double - Input field for numbers, with `mode: integer` or `mode: float`
# imagelist - text (65kb) - Input type for imagelists. Add multiple images. Useful for image sliders, galleries, etcetera.
# image - varchar(256) - image select/upload widget, stored as filename.
# file - varchar(256) - file select/upload widget, stored as filename.
diff --git a/src/Entity/Content.php b/src/Entity/Content.php
index 9050c685e..6a72d49d5 100644
--- a/src/Entity/Content.php
+++ b/src/Entity/Content.php
@@ -10,6 +10,7 @@
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use Bolt\Configuration\Content\ContentType;
use Bolt\Entity\Field\Excerptable;
+use Bolt\Entity\Field\ScalarCastable;
use Bolt\Enum\Statuses;
use Bolt\Repository\FieldRepository;
use Doctrine\Common\Collections\ArrayCollection;
@@ -640,7 +641,7 @@ public function __call(string $name, array $arguments = [])
throw new \RuntimeException(sprintf('Invalid field name or method call on %s: %s', $this->__toString(), $name));
}
- if ($field instanceof Excerptable) {
+ if ($field instanceof Excerptable || $field instanceof ScalarCastable) {
return $field->getTwigValue();
}
diff --git a/src/Entity/Field/CheckboxField.php b/src/Entity/Field/CheckboxField.php
index a8c948e4c..320b3fc0e 100644
--- a/src/Entity/Field/CheckboxField.php
+++ b/src/Entity/Field/CheckboxField.php
@@ -11,7 +11,13 @@
/**
* @ORM\Entity
*/
-class CheckboxField extends Field implements FieldInterface
+class CheckboxField extends Field implements FieldInterface, ScalarCastable
{
public const TYPE = 'checkbox';
+
+ public function getTwigValue()
+ {
+ return (bool) current($this->getValue());
+ }
+
}
diff --git a/src/Entity/Field/DateField.php b/src/Entity/Field/DateField.php
index 8c209719f..a89aa1d28 100644
--- a/src/Entity/Field/DateField.php
+++ b/src/Entity/Field/DateField.php
@@ -11,7 +11,7 @@
/**
* @ORM\Entity
*/
-class DateField extends Field implements FieldInterface
+class DateField extends Field implements FieldInterface, ScalarCastable
{
public const TYPE = 'date';
diff --git a/src/Entity/Field/EmailField.php b/src/Entity/Field/EmailField.php
index 3dd7ec14d..332e32d9f 100644
--- a/src/Entity/Field/EmailField.php
+++ b/src/Entity/Field/EmailField.php
@@ -11,7 +11,7 @@
/**
* @ORM\Entity
*/
-class EmailField extends Field implements FieldInterface
+class EmailField extends Field implements FieldInterface, ScalarCastable
{
public const TYPE = 'email';
}
diff --git a/src/Entity/Field/FloatField.php b/src/Entity/Field/FloatField.php
deleted file mode 100644
index e6c63b5eb..000000000
--- a/src/Entity/Field/FloatField.php
+++ /dev/null
@@ -1,17 +0,0 @@
-{{ field|label }}: {{ field ? "checked" : "not checked" }}
+ {{ field|label }}: {% if field.twigValue %} checked {% else %} not checked {% endif %}
{% endif %}
{# Embed fields #}
From eceaeda3d4e018dc0d0249e0f37f20a68798305a Mon Sep 17 00:00:00 2001
From: Bob den Otter
Date: Mon, 1 Jun 2020 11:15:03 +0200
Subject: [PATCH 2/2] Update CheckboxField.php
---
src/Entity/Field/CheckboxField.php | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/Entity/Field/CheckboxField.php b/src/Entity/Field/CheckboxField.php
index 320b3fc0e..35daf1448 100644
--- a/src/Entity/Field/CheckboxField.php
+++ b/src/Entity/Field/CheckboxField.php
@@ -17,7 +17,6 @@ class CheckboxField extends Field implements FieldInterface, ScalarCastable
public function getTwigValue()
{
- return (bool) current($this->getValue());
+ return current($this->getValue());
}
-
}