heimrichhannot/contao-filter-bundle

通用的contao过滤器。

2.0.0-beta1 2024-03-06 16:52 UTC

This package is auto-updated.

Last update: 2024-09-22 07:57:03 UTC


README

此插件提供了一个通用的过滤器模块,可用于任意contao实体,包含标准的过滤器,初始过滤器以及过滤器表单类型,包括symfony表单类型表示

特性

  • 使用symfony表单组件处理表单
  • 使用symfony表单模板渲染表单(目前可用:bootstrap 3-5,foundation,div,table)
  • 支持许多symfony表单类型
  • 高度可定制,并与tl_module表解耦
  • 使用symfony翻译处理标签/消息
  • 始终渲染空表单(不包含用户选择)
  • 合并具有相同表单名称的多个过滤器表单中的数据
  • 默认值(可被用户覆盖)
  • 初始值(不能被用户覆盖)
  • 将过滤器数据存储在会话中(无GET参数URL残留)
  • 内容元素"Filter-Preselect",具有可选的重定向功能,用于在指定页面上预选过滤器
  • 内容元素"Filter-Hyperlink",具有过滤器预选功能
  • 集成
    • codefog/contao-news_categories
    • codefog/tags-bundle
    • heimrichhannot/contao-categories-bundle
    • heimrichhannot/contao-encore-bundle

使用方法

安装

  1. 使用composer或contao管理器安装

    composer require heimrichhannot/contao-filter-bundle
    
  2. 更新数据库

我们建议将此插件与List BundleReader Bundle一起使用。

设置

  1. 在系统 -> 过滤器 & 排序配置中创建过滤器配置
  2. 将过滤器元素添加到过滤器配置中。
  3. 如果您想在某个地方显示过滤器(例如过滤列表),则创建一个过滤器/排序前端模块。

包装元素(DateRange,ProximitySearch等)

包装元素必须放在相关字段之前。例如,date_range包装元素需要放在两个相关日期字段之前。

预选

过滤器插件表单不是典型的GET表单,因此无法简单地复制过滤器URL来共享或保存过滤后的列表。为了克服这一限制,可以生成预选URL。可以在模板变量中找到当前过滤器的预选URL,您可以创建预选内容元素或从FilterConfig中程序化地获取URL。

模板变量

如果设置了过滤器,变量preselectUrl包含当前过滤器的预选URL。它在过滤器模板和前端模块模板中可用。

例如,您可以创建一个复制预选URL的按钮

{% if preselectUrl is defined and preselectUrl is not empty %}
   <div class="col-xd-12 col-md-3">
   <a class="btn btn-primary" onclick="navigator.clipboard.writeText('{{ preselectUrl }}');alert('Copied preselect link!');return false;">Filtervorauswahllink kopieren</a>
   </div>
{% endif %}

内容元素

您可以使用以下内容元素之一

  • "Filter-Preselect",具有可选的重定向功能,用于在指定页面上预选过滤器
  • "Filter-Hyperlink",具有过滤器预选功能

FilterConfig

您可以从FilterConfig实例生成预选链接

<?php 
use HeimrichHannot\FilterBundle\Manager\FilterManager;

class CustomController {
   private FilterManager $filterManager;
   
   public function invoke(): string
   {
       $filterConfig = $this->filterManager->findById($this->objModel->filter);
       return !empty($filterConfig->getData()) ? $filterConfig->getPreselectAction($filterConfig->getData(), true) : ''
   }
}

插入标记

更多文档

开发者介绍 模板