Skip to content

Commit 6118c25

Browse files
committed
Add more facet form builders
1 parent b14056d commit 6118c25

File tree

5 files changed

+52
-10
lines changed

5 files changed

+52
-10
lines changed

src/Form/Builder/ToggleFacetFormBuilder.php src/Form/Builder/CheckboxFacetFormBuilder.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Symfony\Component\Form\FormBuilderInterface;
99
use function Symfony\Component\String\u;
1010

11-
final class ToggleFacetFormBuilder implements FacetFormBuilderInterface
11+
final class CheckboxFacetFormBuilder implements FacetFormBuilderInterface
1212
{
1313
public function build(FormBuilderInterface $builder, string $name, array $values, array $stats = null): void
1414
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Setono\SyliusMeilisearchPlugin\Form\Builder;
6+
7+
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
8+
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
9+
use Symfony\Component\Form\FormBuilderInterface;
10+
use function Symfony\Component\String\u;
11+
12+
final class ChoiceFacetFormBuilder implements FacetFormBuilderInterface
13+
{
14+
public function build(FormBuilderInterface $builder, string $name, array $values, array $stats = null): void
15+
{
16+
$keys = array_keys($values);
17+
$choices = array_combine($keys, $keys);
18+
19+
$builder->add($name, ChoiceType::class, [
20+
'label' => sprintf('setono_sylius_meilisearch.form.search.facet.%s', u($name)->snake()),
21+
'choices' => $choices,
22+
'expanded' => true,
23+
'multiple' => true,
24+
'required' => false,
25+
]);
26+
}
27+
28+
public function supports(string $name, array $values, array $stats = null): bool
29+
{
30+
foreach (array_keys($values) as $value) {
31+
if (is_numeric($value)) {
32+
return false;
33+
}
34+
}
35+
36+
return true;
37+
38+
}
39+
}

src/Resources/config/services/form.xml

+7-2
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@
22
<container xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://symfony.com/schema/dic/services"
33
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
44
<services>
5-
<!-- Builders -->
5+
<!-- Facet form builders -->
66
<service id="Setono\SyliusMeilisearchPlugin\Form\Builder\FacetFormBuilderInterface"
77
alias="Setono\SyliusMeilisearchPlugin\Form\Builder\CompositeFacetFormBuilder"/>
88

99
<service id="Setono\SyliusMeilisearchPlugin\Form\Builder\CompositeFacetFormBuilder"/>
1010

11-
<service id="Setono\SyliusMeilisearchPlugin\Form\Builder\ToggleFacetFormBuilder">
11+
<service id="Setono\SyliusMeilisearchPlugin\Form\Builder\CheckboxFacetFormBuilder">
1212
<tag name="setono_sylius_meilisearch.facet_form_builder"/>
1313
</service>
1414

15+
<service id="Setono\SyliusMeilisearchPlugin\Form\Builder\ChoiceFacetFormBuilder">
16+
<tag name="setono_sylius_meilisearch.facet_form_builder"/>
17+
</service>
18+
19+
<!-- Search form builder -->
1520
<service id="Setono\SyliusMeilisearchPlugin\Form\Builder\SearchFormBuilderInterface"
1621
alias="Setono\SyliusMeilisearchPlugin\Form\Builder\SearchFormBuilder"/>
1722

src/Resources/translations/messages.en.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ setono_sylius_meilisearch:
33
search:
44
facet:
55
on_sale: On sale
6+
size: Size
67
q_placeholder: Search...
78
update_filter: Update filter
89
ui:

src/Resources/views/search/index.html.twig

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
{# @var items \Sylius\Component\Core\Model\ProductInterface[] #}
22
{% extends '@SyliusShop/layout.html.twig' %}
33

4+
{% form_theme searchForm '@SyliusShop/Form/theme.html.twig' %}
5+
46
{% block content %}
57
<h1 class="ui monster section dividing header">
68
Search results
79
</h1>
810
<div class="ui stackable grid">
911
<div class="four wide column">
10-
{{ form_start(searchForm) }}
11-
{% if searchForm.onSale is defined %}
12-
{{ form_row(searchForm.onSale) }}
13-
{% endif %}
14-
15-
<button class="ui button" type="submit">{{ 'setono_sylius_meilisearch.form.search.update_filter'|trans }}</button>
16-
{{ form_end(searchForm) }}
12+
{{ form(searchForm, { 'attr': { 'id': 'search-form', 'class': 'ui form' } }) }}
13+
<button class="ui button" type="submit" form="search-form">{{ 'setono_sylius_meilisearch.form.search.update_filter'|trans }}</button>
1714
</div>
1815
<div class="twelve wide column">
1916
<div class="ui three cards">

0 commit comments

Comments
 (0)