peci1/suggestinput

此包已被弃用且不再维护。未建议替代包。

文本字段动态建议器。

v2.1.1 2014-04-21 15:22 UTC

This package is not auto-updated.

Last update: 2023-07-04 01:24:47 UTC


README

本教程适用于Nette框架用户,其他人需要根据自身需求进行调整。

本版本与Nette 2.1兼容。还有与Nette 2.0和0.9兼容的旧版本。请查阅 https://github.com/peci1/Nette-SuggestInput/releases

安装

只需将/libs/SuggestInput, /www/js 和 /www/css 复制到您的Nette项目

文件列表

/app
     /presenters
         SuggesterTestPresenter.php - an example presenter showing the usage
     /templates
         /SuggesterTest
             default.phtml
/libs       //You can copy this libs dir everywhere in your project
    /SuggestInput
        SuggestInput.php
        license.txt
        /Suggesters
            ISuggester.php
            ArraySuggester.php
            DbSuggester.php
            ConstantSuggester.php
        /docs - this help :) and other help files - you don't need to copy them
/www
     /js
         jquery.suggest.js
         jquery.bgiframe.js
         suggestInput.js
     /css
         suggest.css

如果您不使用RobotLoader,您需要将SuggestInput.php包含到您的程序中。

不要忘记调用

Nette\Forms\Form::extensionMethod('Nette\Forms\Form::addSuggestInput', 'Nette\Addons\SuggestInput::addSuggestInput');

从您的引导或 BasePresenter::__construct()

在页面布局中包含以下JS库(按以下顺序)

  • jQuery 1.10
  • jQuery.bgiframe 3.0(包含在包中)
  • jQuery.suggest 1.2修改用于SuggestInput(包含在包中)
  • netteForms.js(Nette 2.0的一部分)
  • suggestInput.js(包含在包中)并在页面布局中包含示例CSS文件
  • suggest.css

使用建议输入

您需要一个返回JSON数组的建议项的presenter动作(它们通过AJAX(或更好的AJAJ - 异步JavaScript和JSON)加载)

因此,您需要一个建议器对象 - 该对象搜索某些"黑盒"并返回匹配的项。在动作和建议器(如果需要)中应使用相同的建议器。

您可以选择3个预定义的建议器

  • ArraySuggester - 您提供一个项目数组,建议器在数组中搜索匹配的项
  • DbSuggester - 在数据库表中搜索匹配的项(使用Nette\Database)
  • ConstantSuggester - 总是建议相同的项(作为数组提供)或者您可以编写自己的建议器,但请实现ISuggester

最简单的情况

在最简单的情况下,您只需在创建的表单上调用

->addSuggestInput('uniqueId', 'Label', $this->link('suggest'))

这假设您创建了一个名为actionSuggest()的动作。该动作使用一个建议器,您可以在组件工厂中创建它createComponentSuggester()

请参阅示例presenter以获取更多示例。

现场演示

您可以在 http://suggest-input.php5.cz/suggester-test/ 尝试现场演示