diff --git a/src/Form/Builder/CheckboxFacetFormBuilder.php b/src/Form/Builder/CheckboxFacetFormBuilder.php index fe4bd91..a430365 100644 --- a/src/Form/Builder/CheckboxFacetFormBuilder.php +++ b/src/Form/Builder/CheckboxFacetFormBuilder.php @@ -14,6 +14,9 @@ public function build(FormBuilderInterface $builder, string $name, array $values { $builder->add($name, CheckboxType::class, [ 'label' => sprintf('setono_sylius_meilisearch.form.search.facet.%s', u($name)->snake()), + 'label_translation_parameters' => [ + '%count%' => $values['true'], + ], 'required' => false, ]); } @@ -23,7 +26,7 @@ public function supports(string $name, array $values, array $stats = null): bool $c = count($values); return match ($c) { - 1 => isset($values['true']) || isset($values['false']), + 1 => isset($values['true']), 2 => isset($values['true'], $values['false']), default => false, }; diff --git a/src/Form/Builder/ChoiceFacetFormBuilder.php b/src/Form/Builder/ChoiceFacetFormBuilder.php index bbfabb9..891db50 100644 --- a/src/Form/Builder/ChoiceFacetFormBuilder.php +++ b/src/Form/Builder/ChoiceFacetFormBuilder.php @@ -4,7 +4,6 @@ namespace Setono\SyliusMeilisearchPlugin\Form\Builder; -use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\FormBuilderInterface; use function Symfony\Component\String\u; @@ -19,6 +18,7 @@ public function build(FormBuilderInterface $builder, string $name, array $values $builder->add($name, ChoiceType::class, [ 'label' => sprintf('setono_sylius_meilisearch.form.search.facet.%s', u($name)->snake()), 'choices' => $choices, + 'choice_label' => fn (string $key) => sprintf('%s (%d)', $key, $values[$key]), 'expanded' => true, 'multiple' => true, 'required' => false, @@ -27,13 +27,17 @@ public function build(FormBuilderInterface $builder, string $name, array $values public function supports(string $name, array $values, array $stats = null): bool { - foreach (array_keys($values) as $value) { - if (is_numeric($value)) { + $keys = array_keys($values); + if (count($keys) < 2) { + return false; + } + + foreach ($keys as $key) { + if (is_numeric($key)) { return false; } } return true; - } } diff --git a/src/Form/Builder/SearchFormBuilder.php b/src/Form/Builder/SearchFormBuilder.php index 2cef09e..707bd20 100644 --- a/src/Form/Builder/SearchFormBuilder.php +++ b/src/Form/Builder/SearchFormBuilder.php @@ -5,6 +5,7 @@ namespace Setono\SyliusMeilisearchPlugin\Form\Builder; use Meilisearch\Search\SearchResult; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\Form\FormInterface; @@ -18,7 +19,8 @@ public function build(SearchResult $searchResult): FormInterface { $builder = $this->formFactory->createNamedBuilder('', options: [ 'csrf_protection' => false, - ]); + 'allow_extra_fields' => true, + ])->add('q', HiddenType::class); /** * Here is an example of the facet stats array diff --git a/src/Resources/translations/messages.en.yaml b/src/Resources/translations/messages.en.yaml index ef0d6c4..42488f4 100644 --- a/src/Resources/translations/messages.en.yaml +++ b/src/Resources/translations/messages.en.yaml @@ -2,7 +2,7 @@ setono_sylius_meilisearch: form: search: facet: - on_sale: On sale + on_sale: On sale (%count%) size: Size q_placeholder: Search... update_filter: Update filter