zitec/form-autocomplete-bundle

此包为您创建实体自动完成表单字段。

安装: 20

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 3

分支: 1

开放问题: 0

类型:symfony-bundle

v1.0.1 2020-06-15 15:57 UTC

This package is auto-updated.

Last update: 2024-09-16 01:59:54 UTC


README

此包为您创建实体自动完成表单字段。

安装

  • composer require zitec/form-autocomplete-bundle
  • 在 config/routes/zitec_autocomplete.yaml 中添加自动完成的路由
    zitec_form_autocomplete:
        resource: "@FormAutocompleteBundle/Resources/config/routing.yml"
            prefix:   /
  • 在 twig.yml 中添加模板字段
    twig:
        form:
            resources:
                - 'FormAutocompleteBundle:Form:fields.html.twig'
  • 在模板中添加 js 和 css
    • select2 库
    • bundles/zitecformautocomplete/css/autocomplete.css
    • @FormAutocompleteBundle/Resources/public/js/autocomplete.js
    • @FormAutocompleteBundle/Resources/public/js/autocomplete_init.js

如何使用

  • 声明用于处理城市自动完成字段数据的服务
    campaigns.form.autocomplete.data_resolver_cities_with_campaigns:
        class: Zitec\FormAutocompleteBundle\DataResolver\EntitySingleDataResolver
        arguments:
            - @doctrine
            - GeolocationsBundle\Entity\City
            - id
            - name
            - getCityWithNameLike
        tags:
            - { name: zitec_autocomplete_data_resolver, key: cities_with_campaigns_single }
  • 在 city 存储库中创建 getCityWithNameLike 函数
        public function getCityWithNameLike($cityName)
            {
                $queryBuilder = $this->createQueryBuilder('c')
                        ->where('c.name like :name or c.internationalName like :name')
                        ->orderBy('c.name', 'ASC')
                        ->setParameter('name', '%'.$cityName.'%');
                //fetch matching cities
                $cities = $queryBuilder->getQuery()->getResult();
                return $cities;
            }
  • 在表单中创建自动完成字段
        ->add('city', 'zitec_autocomplete', array(
            'data_resolver' => 'cities_with_campaigns_single',
            'placeholder' => 'placeholder_campaign_list_city',
            'required' => false,
            'delay' => 250,
            'allow_clear' => true,
        ))

组件

AutocompleteController

处理自动完成特定操作的控制器。

方法

  • indexAction(Request $request, $dataResolverId) : 提供特定于给定数据解析器的自动完成建议的内部操作;
  • parametersIsValid($parameter): 验证我们接收到的参数是否具有正确的数据类型。参数必须是一个标量值或空。

DataResolverInterface

数据解析器是一个管理自动完成字段数据的对象。当程序员将自动完成字段附加到表单时,它还必须指定一个数据解析器。它应该能够

  • 建议符合用户搜索标准的项目;
  • 将用户输入转换为应用程序数据;
  • 将应用程序数据转换为视图数据(前一个操作的逆操作);

方法

  • getSuggestions($term, $context = null): 根据用户搜索词,返回一组匹配的建议。
    • @param: string $term
    • @param: mixed $context: 当请求自动完成建议时,客户端还可以指定一个可以影响结果生成的上下文;
    • @return: array - 包含以下键的一组数组或对象(可以序列化为 JSON)
      • id: 建议项目的标识符;
      • text: 建议项目的标签;
  • getModelData($viewData, $viewDataAlwaysString = false): 从视图数据中提取模型数据(在应用程序中使用的数据)。
    • @param mixed $viewData
    • @param bool $viewDataAlwaysString: 标志指定从客户端接收到的数据始终表示为字符串,即使字段包含多个值。
    • @return mixed
  • getViewData($modelData): 从模型数据中提取视图数据(将在视图中使用)。
    • @param: mixed $modelData
    • @return: mixed – 视图中的数据应表示为具有以下键的数组或数组集合
      • Value: 实际数据;
      • Label: 数据的描述;

DataResolverManager

管理应用程序中声明的自动完成数据解析器。

字段

  • $dataResolver: 通过其标识符键控的管理的数据解析器集合。

方法

  • Get($key): 获取具有给定键的数据解析器。

EntityBaseDataResolver

字段

  • $doctrine: doctrine 服务;
  • $entityClass: 相关实体的类;
  • $idPath: 实体 id 属性的路径;
  • $labelPath: 表示标签的实体属性的路径;
  • $suggestionsFetcher: 消费者可以提供用于获取建议数据的自定义函数。该函数将接收术语并应返回匹配指定类型的实体数组。它将以以下形式之一表示
    • a simple string: 表示实体存储库中的方法名称;
    • a callable: 表示函数的完整路径;
  • $propertyAccesor: 用于从实体获取数据的属性访问器实例;

方法

  • callSuggestionsFetcher($term): 调用自定义建议获取器并返回结果。
  • getSuggestionsData($term): 获取建议的原始数据。
  • getSuggestions(): 根据用户搜索项,返回匹配的建议列表。

EntitySingleDataResolver

将单值自动完成字段的 数据与实体关联的数据解析器。程序员可以直接使用此类来声明他们的数据解析器服务。

方法

  • getModelData($viewData, $viewDataAlwaysString): 从视图数据中提取模型数据(应用程序中使用的数据)。
  • getViewData($modelData): 从模型数据中提取视图数据(将在视图中使用)。

EntitySingleDataResolver

将多值自动完成字段的 数据与实体关联的数据解析器。程序员可以直接使用此类来声明他们的数据解析器服务。

方法

  • getModelData($viewData, $viewDataAlwaysString): 从视图数据中提取模型数据(应用程序中使用的数据)。
  • getViewData($modelData): 从模型数据中提取视图数据(将在视图中使用)。

DataResolverLoaderCompilerPass

编译器步骤,负责将容器中声明的所有数据解析器注册到数据解析器管理器中。为了声明数据解析器,用户必须创建一个实现DataResolverInterface的服务,标记它并在标记上设置一个属性,该属性指定数据解析器键。

字段

  • DATA_RESOLVER_TAG: zitec_autocomplete_data_resolver;
  • DATA_RESOLVER_MANAGER_ID: zitec.form_autocomplete.data_resolver_manager;

AutocompleteDataTransformer

特定于自动完成表单字段类型的数据转换器。它将使用特定于当前处理的字段的 数据解析器。实现DataTransformerInterface。

字段

  • $dataResolver: 执行数据转换的自动完成数据解析器实例;
  • $viewDataAlwaysString: 标记,表示视图数据始终表示为字符串(即使字段包含多个值)。此信息将传递给数据解析器,以便相应地格式化视图数据。

AutocompleteType

定义 zitec 自动完成表单字段类型。该字段基本上是一个文本框,建议由用户输入生成。

字段

  • DEFAULT_AUTOCOMPLETE_PATH: zitec_form_autocomplete_autocomplete;
  • $router: 路由服务;
  • $dataResolverManager: 数据解析器管理器服务;

许可证

此捆绑包受MIT许可证保护。有关详细信息,请参阅LICENSE