NasExt / SuggestionInput – Našeptaváč

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
duskohu
Člen | 778
+
0
-

Zdravím
Urobil som formulárovú komponentu SuggestionInput.
Viem že takýchto komponent je už dosť, táto implementácia mi celkom vyhovuje, možno niekto bude zdielať rovnaký názor a použije ju.
Rozšírenie nájdete na Githube doplnené o dokumentáciu, odporúčam inštaláciu cez composer.

  • podporuje nastavenie počtu prvkov v zozname našepkávača
  • nastavenie po koľkých písmenách má začať našeptávať (startSuggest)
  • časovú odozvu našeptávača(suggestTimeout)
  • možnosť nastaviť odlišný text v zozname našeptávača a text ktorý po zvolení vloží do inputu
akadlec
Člen | 1326
+
0
-

V jaké tvaru to vrací výsledky? Jen čistý text nebo se to dá „obalit“ když bych chtěl třeba použít suggest pro usery tak aby mě to vrátilo avatar, name a login?

duskohu
Člen | 778
+
0
-

Nevim ci uplne rozumiem, $form->getValues() vracia len jednu hodnotu, ale pokial by si chcel napr v zozname ktore ti suggestionInpit zobrazovat id usera a jeho cele meno, ale po vybere chces aby ti do inputu vlozilo iba id. Napr. toto bude zobrazovat „0::Value1“, ale po vybere do inputu vlozi „0“

$data = array(
    'Value1',
    'Value2',
    'Value3',
    'Value4',
    'Value5',
    'Other Value1',
    'Other Value2',
    'Other Value3',
    'Other Value4'
);

$form->addSuggestionInput("item", "Name")
    ->setAttribute('autocomplete', 'off')
    ->setSuggestCallback(function ($filter, $count, SuggestionData $suggestionData) use ($data) {
        foreach ($data as $id=>$value) {
            $name = $id . '::' . $value;
            $suggestionData->setRecord($value, $name);
        }
        return $suggestionData;
    });

inak vies pouzit klasicky variant:

$data = array(
    'Value1',
    'Value2',
    'Value3',
    'Value4',
    'Value5',
    'Other Value1',
    'Other Value2',
    'Other Value3',
    'Other Value4'
);

$form->addSuggestionInput("productId", "Name", 5)
    ->setAttribute('autocomplete', 'off')
    ->setSuggestCallback(function ($filter, $count, SuggestionData $suggestionData) use ($data) {
        $suggestionData->setData($data);
        return $suggestionData;
    });

Editoval duskohu (18. 12. 2013 21:59)

akadlec
Člen | 1326
+
0
-

No mě spíš zajímalo to co to napoví, tj. po doběhnutí ajaxu se mě vyroluje nabídka kde bude avatar, jméno a login a já pak na jednoho kliknu a v nějakém hidden poli bude uloženo třeba id daného usera, nebo login.

No ale asi zůstanu u typeahead. V inputu si vytvořím data atribut s handle co mě zpracuje sugesci.

duskohu
Člen | 778
+
0
-

No da sa ovplivnit co sa ti bude zobrazovat v ponuke suggestion inputu napr vies tam vlozit aj obrazok, alebo akykolvek HTML kod:

$data = array(
    'Value1',
    'Value2',
    'Value3',
    'Value4',
    'Value5',
    'Other Value1',
    'Other Value2',
    'Other Value3',
    'Other Value4'
);

$form->addSuggestionInput("item", "Name")
    ->setAttribute('autocomplete', 'off')
    ->setSuggestCallback(function ($filter, $count, SuggestionData $suggestionData) use ($data) {
        foreach ($data as $id=>$value) {
            $avatar = '<img src="avatar.jpg" height="10" width="10"> '.$name;
            $suggestionData->setRecord($value, $avatar);
        }
        return $suggestionData;
    });

Editoval duskohu (19. 12. 2013 13:17)