zitec / form-autocomplete-bundle
此包为您创建实体自动完成表单字段。
v1.0.1
2020-06-15 15:57 UTC
Requires
- php: >=7.4.0
- ext-json: *
- symfony/form: ^4.4 || ^5.0
- symfony/framework-bundle: ^4.4 || ^5.0
- symfony/orm-pack: ^1.0
- twig/twig: ^3.0
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。