nepada / autocomplete-input
Nette 表单的自动完成文本输入。
v1.3.1
2023-12-31 12:38 UTC
Requires
- php: >=8.1.0 <8.4
- nette/application: ^3.1.4@dev
- nette/forms: ^3.1@dev
- nette/utils: ^3.2@dev || ^4.0@dev
Requires (Dev)
- mockery/mockery: 1.6.6
- nepada/coding-standard: 7.13.0
- nepada/phpstan-nette-tester: 1.1.0
- nette/bootstrap: >=3.1@dev
- nette/component-model: >=3.0.2
- nette/di: ^3.0.6@dev
- nette/http: >=3.1.0@dev
- nette/schema: ^1.0.3@dev
- nette/tester: 2.5.1
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpstan/phpstan: 1.10.47
- phpstan/phpstan-mockery: 1.1.1
- phpstan/phpstan-nette: 1.2.9
- phpstan/phpstan-strict-rules: 1.5.2
- shipmonk/phpstan-rules: 2.10.0
- spaze/phpstan-disallowed-calls: 2.16.1
This package is auto-updated.
Last update: 2024-09-01 17:37:32 UTC
README
安装
通过 Composer
$ composer require nepada/autocomplete-input
选项 A:通过 DI 扩展安装表单容器扩展方法
extensions: - Nepada\Bridges\AutocompleteInputDI\AutocompleteInputExtension
它将为 Nette\Forms\Container
注册扩展方法 addAutocomplete($name, $label, callable $dataSource): AutocompleteInput
。
选项 B:在基础表单/容器类中使用特性
您还可以在基础表单/容器类中使用 AutocompleteInputMixin
特性来添加方法 addAutocomplete($name, $label, callable $dataSource): AutocompleteInput
。
示例
trait FormControls { use Nepada\Bridges\AutocompleteInputForms\AutocompleteInputMixin; public function addContainer($name) { $control = new Container; $control->setCurrentGroup($this->getCurrentGroup()); if ($this->currentGroup !== null) { $this->currentGroup->add($control); } return $this[$name] = $control; } } class Container extends Nette\Forms\Container { use FormControls; } class Form extends Nette\Forms\Form { use FormControls; }
用法
AutocompleteInput
是一个标准的 Nette 文本输入,增强了自动完成功能。输入暴露了用于检索匹配指定查询的条目的 URL - 创建输入时需要传递数据源回调
$autocompleteInput = $form->addAutocomplete('foo', 'Foo', function (string $query) { // return entries matching the query }); $autocompleteInput->setAutocompleteMinLength(3); // set minimum input length to trigger autocomplete
客户端
后端表单控件与任何特定的客户端实现没有紧密耦合。渲染的输入包含所有必要设置的数据属性
<input type="text" name="foo" data-autocomplete-query-placeholder="__QUERY_PLACEHOLDER__" data-autocomplete-url="/some-url/?do=form-foo-autocomplete&form-foo-query=__QUERY_PLACEHOLDER__" data-autocomplete-min-length="3" > <!-- data-autocomplete-min-length is optional -->
如果您不想自己推出客户端解决方案,请尝试使用 @nepada/autocomplete-input npm 包。