hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 11:13



Jelenlévő felhasználók

Jelenleg 210 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 209 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Autocomplete
HozzászólásElküldve: 2017.11.30. 14:48 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2014.05.01. 13:18
Hozzászólások: 627
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 104 alkalommal
Üdv!

Az oldalamon vannak input bemenetek és ezeket többnyire magától ki szeretné tölteni a chrome. Ugye bejelentkezéskor, ha mentetem vele az adatokat, akkor nem is lenne logikátlan, de valamiért teljesen oda nem illő helyekre akarja beírni. Ezt szeretném kivenni teljesen, de az autocomplete="off", vagy "false" sem működik. Erre valakinek valami ötlete?

Aki nem értené problémát, annak itt egy kép róla.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Autocomplete
HozzászólásElküldve: 2017.12.30. 11:06 
Offline
Tud valamit
Avatar

Csatlakozott: 2017.12.04. 09:15
Hozzászólások: 116
Megköszönt másnak: 58 alkalommal
Megköszönték neki: 2 alkalommal
Szia.
Habár több leírást is találtam arról, hogy hogyan lehet cake-kel autocomplete input mezőt létrehozni, egyik sem volt teljes. Annak ellenére, hogy egyszer kétszer pár hónappal ezelőtt már csináltam is ilyet, most újra ráment több mint egy órám mire összeraktam. Mivel pár hónap múlva semmiképpen nem akarok majd vele ennyit eltölteni, hát most jól leírom.
Azt hiszem ezt a funkciót már mindenki használta valahol. Az a lényege, hogy amikor egy input keresési mezőbe kezdjük bepötyögni, hogy “man”, akkor a háttérben végigfut egy keresés és a lehetséges eredményekből valamilyen algoritmus segítségével már meg is kapunk pár eredményt, mint pl “manual”, “manci”, stb. ezek az eredmények jobb esetben a keresési input alatt jelennek meg és választhatunk közülük. Így működik a goggle toolbar és a google suggest.
Mivel ez egy általánosan használt funkció a cake is beépítette az ajax helpereébe. Használatához a következőket kell tennünk:

JS elérhetővé tétele: Az app/views/layouts/default.thtml file-ba a </head> rész előtt be kell linkelnünk a szükséges JavaScript fileokat.
  1. <?php
  2.    print $javascript->link('prototype');
  3.    print $javascript->link('scriptaculous.js?load=effects');
  4.    print $javascript->link('controls');
  5. ?>

Persze ezek csak akkor fognak működni, ha a app/webroot/js könyvtárba letöltjük a szükséges librarykat. Kicsomagolás után a magam részéről az src és a lib könyvtárban található js fileokat másoltam be.

Az ajax helper meghívása: Az app_controller.php fileba a $helper tömböt ki kell egészíteni az ajaxxal is. Nálam így var $helpers = array('html','javascript','form','ajax'); lett. Ha nem akarjuk minden controllerben használni, akkor persze elég csak abba a controller fileba megtenni ezt, ahol használni akarjuk.
Ha ez megvan, akkor újfent a default.thtml filehoz kell nyúlnunk, és betennünk 4 sort ami.
  1. <form action="/tasks/index" method="post">
  2.       <?php
  3.          print $ajax->autoComplete('Task/task', '/tasks/search');
  4.          print $html->submit('Keres');
  5.       ?>
  6.    </form>

Az autoComplete függvénynek elég két paramétert átadnunk. Az első a létrehozandó input mezőnket azonosítja, a második pedig a meghívandó controller függvényt. Adatbázis lekérés: Ezek után nyilvánvaló, hogy létre kell hoznunk a controllerünkben az előbb meghívott függvényt.
  1. function search(){
  2.    //ajaxos keresés a taskokban
  3.    $this->Task->recursive = 1;
  4.    $this->set('searchResults', $this->Task->findAll("task LIKE '{$this->data['Task']['task']}%'",null,null,null,1,1));
  5.    $this->render('searchResults','ajax');
  6.    }

Magyarul a findAll metódus segítségével keressük azokat a rekordokat ahol “task” mező a begépelt szótöredékkel kezdődik. Az eredmények a $searchResults tömbbe kerülnek.

Az eredmények megjelenítése: Ezek után már csak a viewt kell létrehoznunk az eredmények megjelenítéséhez. Ehhez (nálam) az app/views/tasks/search_results.thtml fileba az alábbi került:
  1. <ul>
  2. <?php
  3.    foreach($searchResults as $s){
  4.       print '<li><a href="/tasks/view/'.$s['Task']['id'].'">'.$s['Task']['task'].'</a></li>';
  5.    }
  6. ?>
  7. </ul>

Amit sehol sem találtam leírva, az az volt, hogy mindenféleképpen ul – li listaként kell kezelnünk az eredményeket, máskülönben nem fognak megjelnni.

CSS: már csak annyi maradt hátra, hogy kicsit pofozzunk az eredmények kinézetén:
  1. div.auto_complete {
  2.    position         :absolute;
  3.    width            :200px;
  4.    background-color :white;
  5.    border           :1px solid #888;
  6.   margin           :0;
  7.    padding          :0;
  8.    }
  9.  
  10. li.selected { background-color: #ffb; }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Autocomplete
HozzászólásElküldve: 2018.05.25. 12:49 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Nem ez volt a kérdés, valamint ha ez lett volna, akkor sem releváns a válasz, mert nem használ CakePHP-t az úr.

A chrome-ot nem nagyon fogod átverni, mivel ha egyszer elmentesz valamit, utána azon a domainen lévő ugyanolyan típusú fieldeket ő ki fogja tölteni, mert neki ez így jó (az természetesen le van szarva, hogy neked mi jó). Nem nagyon van erre megoldás, esetleg ilyen NASA szintű hackek, hogy nem inputot használsz, hanem valami custom motyót, viszont akkor azt se fogja menteni amit kéne. Ne törődj ezzel, valóban ront a user experience-en, de még az Amazon sem oldotta meg, szóval neked abszolút nem kell megoldanod. :)

Ők köszönték meg Silent nek ezt a hozzászólást: JohanCorn (2018.05.25. 13:27)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 3 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole