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()); } - }