From b59164b0b7451905adcca244e6395281eb0633ca Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Fri, 20 Jul 2018 00:41:45 +0200 Subject: bake add Search filter support --- .../Template/Bake/Element/Controller/index.twig | 12 +++++++- .../CustomTheme/src/Template/Bake/Model/table.twig | 18 +++++++++++ .../src/Template/Bake/Template/index.twig | 28 +++++++++++++++++ .../src/View/Helper/BakeExtraHelper.php | 35 ++++++++++++++++++++++ 4 files changed, 92 insertions(+), 1 deletion(-) (limited to 'fai_gestion/plugins/CustomTheme/src') diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig index 181e830..8938f6a 100644 --- a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig +++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig @@ -27,7 +27,17 @@ 'contain' => [{{ Bake.stringifyList(belongsTo, {'indent': false})|raw }}] ]; {% endif %} +{%- if BakeExtra.hasFilters(name) %} + $query = $this->{{ currentModelName }} + ->find('search', ['search' => $this->request->getQueryParams()]); + ${{ pluralName }} = $this->paginate($query); +{% else %} ${{ pluralName }} = $this->paginate($this->{{ currentModelName }}); +{% endif %} + $this->set('{{ pluralName }}', ${{ pluralName }}); +{% for model in BakeExtra.getFiltersExtraModels(name, modelObj) %} - $this->set(compact('{{ pluralName }}')); + $this->loadModel('{{ model.getAlias }}'); + $this->set('{{ model.getAlias|variable }}', $this->{{ model.getAlias }}->find('list')->toArray()); +{% endfor %} } diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig index 2ef02e9..fb3a417 100644 --- a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig +++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig @@ -156,4 +156,22 @@ class {{ name }}Table extends Table return '{{ connection }}'; } {% endif %} + +{%- if BakeExtra.hasFilters(name) %} + + /** + * @return \Search\Manager + */ + public function searchManager() + { + $searchManager = $this->behaviors()->Search->searchManager(); +{% for k, filter in BakeExtra.getFilters(name) %} + $searchManager->{{ filter.mode }}('{{ k }}', [ + {{- BakeExtra.stringifySearchManagerConfig(filter)|raw -}} + ]); +{% endfor %} + + return $searchManager; + } +{% endif %} } diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Template/index.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Template/index.twig index 074a30b..15bfe45 100644 --- a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Template/index.twig +++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Template/index.twig @@ -39,6 +39,9 @@ * @var \{{ namespace }}\View\AppView $this * @var \{{ entityClass }}[]|\Cake\Collection\CollectionInterface ${{ pluralVar }} */ + +// index could contain table head filters and labels in aren't useful +$this->Form->setTemplates(['label' => '']); ?> {% set fields = Bake.filterFields(fields, schema, modelObject, indexColumns, ['binary', 'text']) %}