16. rész - Ad egy szűrőt, és megtanulják, hogy saját
Szűrők nagyban javítja a kényelmet, a lista az iratkezelés az admin panel.
Összességében, majd adjunk hozzá három szűrőt:
Azt is megmutatja, hogy milyen könnyen lehet létrehozni saját szűrők segítségével JHtml osztályban.
Változó mintái az üzenet listában
Tehát nyitott admin / modellek / helloworlds.php fájlt, és kezdjük el a változtatásokat.
A minta adatok megalakult a lista már folyik getListQuery () metódust. Lássuk, hogyan változott:
Először a menekülés () metódus, akkor megvédi a speciális karakterek, mint például a „%”, amely tartalmazza a keresésnek. Aztán keret a lekérdezés idézőjelben, de ne árnyékolja a újra átadásával hamis, mint a második érv idézni () metódust.
Szűrőértékek jutunk el az állami modell. Ezért szükséges, hogy ezeket az értékeket, így populateState () metódus:
Itt kap, és állítsa be az értékeket a szűrőket. Ebben az esetben használjuk getUserStateFromRequest () metódust. ami elérhető számunkra a szülő osztály JModelList. Ez a módszer lesz az értéke a felhasználó (session) az állam változó, és újra meghatározza ennek az értéknek a változása esetén. Ahhoz, hogy az értékeket a felhasználó állapotban voltak egyedi különböző összetevői között, az általunk használt ingatlan $ this-> összefüggésben a szülő osztály JModel. amely be van állítva a kivitelező.
Ennek eredményeképpen kapunk egy memória hatástól szűrőértékeket. Te valószínűleg figyelni rá, ha dolgozik, Joomla - szűrőket tartósított közötti váltáskor alkatrészek, amíg nem megy ki az admin felületen. Csak akkor, ha visszaáll felhasználó státusz, és ennek megfelelően szűri.
Azt is hozzá kell adnunk egy módszert getStoreId ():
Ezt a módszert használják caching adatokat. Ebben, figyelembe vesszük a jelenlegi állapotában a szűrő, ami szükséges, hogy létrehoz egy egyedülálló bolt id. Ez gyakran használják a szülő JModelList osztályban. ahol a legfontosabb, hogy az ingatlan array $ cache.
változást segítő
Változás a kilátás az üzenet lista
Mivel most már van egy szűrő állapot üzenetek, meg tudjuk változtatni a logika, hogy törölje az üzeneteket. Elsősorban fogjuk őket egy kosárba, és törölheti csak azokat az üzeneteket, amelyeket már kosarába helyezzük. Ehhez egy kis változás addToolBar () metódus:
Most, hogy az állam a szűrőérték lesz egyenlő 2 (a kosár), akkor meg kell jelennie a gomb „Empty Trash”. Ellenkező esetben, akkor megjelenik a gomb helyett a „kosárba”.
Változás az üzenetet listasablonok
Először módosítsa a mester sablon admin / views / helloworlds / tmpl / default.php és szűrők hozzáadása:
Látjuk, hogy az összes lista épül a JHtml osztályban. Alapvetően az egész ötlet csapódik le, hogy átjutni JHtml tárházát a legördülő listából. Végén a cikk, én megmutatom, hogyan lehet létrehozni saját szűrőket ebbe az osztályba.
Keresés értékeket vesszük az állami modell. Továbbá meg kell jegyezni, hogy bármilyen változás a szűrők eredményeket olyan formában nyújtják be a this.form.submit ().
A sub-template admin / views / helloworlds / tmpl / default_foot.php myuvelichivaem érték colspan:
Az eredmény itt van egy kép:
Állítsuk a vezérlő üzenete
Nyitott admin / vezérlő / helloworld.php fájlt, és így egy kis változás allowAdd () metódus - változtatni a
Mi csak hozzá az alapértelmezett érték, amelyet kivett a szűrő.
Változás a forma fájl
A fájl formájában, hozzá kell két érték állam:
Nyitott admin / modellek / formák / helloworld.xml fájlt, és adjuk hozzá a mezőt kijelenteni a két érték:
Add nyelv állandó
Nyissa meg a fájlt admin / language / hu-HU / hu-GB.com_helloworld.ini és adjunk hozzá:
COM_HELLOWORLD_FILTER_SEARCH_DESC = „Kereshetünk bármilyen szöveget üdvözlő”.
COM_HELLOWORLD_N_ITEMS_ARCHIVED_1 = „Egy üzenet archiválva”
COM_HELLOWORLD_N_ITEMS_ARCHIVED = "Üzenetek archivált"
COM_HELLOWORLD_N_ITEMS_TRASHED_1 = „Egy üzenet a kukába”
COM_HELLOWORLD_N_ITEMS_TRASHED = "Üzenetek trashed"
Nyitott admin / language / ru-RU / ru-RU.com_helloworld.ini fájlt, és adjunk hozzá:
COM_HELLOWORLD_FILTER_SEARCH_DESC = „Kereshet minden szöveg a köszöntés.”
COM_HELLOWORLD_N_ITEMS_ARCHIVED_1 = "1 üzenet archiválás"
COM_HELLOWORLD_N_ITEMS_ARCHIVED_2 = „Az üzenetek archiválva”
COM_HELLOWORLD_N_ITEMS_ARCHIVED_MORE = "üzenet archiválás"
COM_HELLOWORLD_N_ITEMS_TRASHED_1 = „1 üzenet kerül a kosárba”
COM_HELLOWORLD_N_ITEMS_TRASHED_2 = „Üzenetek helyezni a kosárba”
COM_HELLOWORLD_N_ITEMS_TRASHED_MORE = „Üzenetek helyezni a kosárba”
Elhelyezés az összetevő telepítőcsomag
Ne felejtsük el, hogy módosítsa a verziószámot a fájl helloworld.xml:
A könyvtár tartalmát a kód:
Csomagolja a könyvtárat egy archív fájlt (zip, tar, tar.gz, bz2), vagy töltse le közvetlenül c GitHub. Ezután telepíteni a Joomla kiterjesztése vezetője. Most a feljegyzéslistába megjelent szűrők.
A kód ezen részének
Készítsen saját szűrők segítségével JHtml osztály
Készítsen saját szűrőket JHtml igen egyszerű. Tegyük fel, hogy a beépített szűrő feltétel nem áll a Joomla, így szükséges, hogy saját.
Az első dolog az, hogy meghatározza JHtml osztályban. hol kell keresni a fájlokat, amelyek meghatározzák a funkciókat dolgozó szűrőket. Ezt használja addIncludePath () módszer. Tegyük fel, hogy fogjuk tárolni ezeket a fájlokat a mappában / admin / segítők / html. akkor a belépési pont /admin/helloworld.php hozzátesszük:
Ezután hozzon létre ebben a mappában filters.php fájlt az alábbi tartalommal:
Most már tudjuk cserélni a vonal
Minden ugyanúgy működik, mint ha használják a beépített Joomla állapotban szűrőt.
De JHtml megállapítja, hogy szükség van, hogy hívja a módszer stateOptions () HelloWorldHtmlFilters osztálya filters.php fájlt. Azt hiszem, talán már sejtette, a válasz abban rejlik a kulcs a „helloworldhtml.filters.stateOptions”. JHtml amely elemzi a következő összetevőkből áll:
- első szegmens - osztályú előtagot, és ha nincs megadva, a JHtml;
- A második szakasz - a fájl nevét
- harmadik szegmens - osztály módszer
Ebben az esetben az osztály nevét JHtml egyesíti az első és a második szegmens. Így, ismerve a kulcs, akkor könnyen talál elérhető Joomla osztályok munka nem csak a szűrőkkel, de különböző elemek, mint a „date”, „csúszkák”, stb Például, mi használjuk a kulcsot a szűrők select.options "vezet a fájl könyvtárak / joomla / html / html / select.php ahol megtalálható JHtmlSelect osztály és opciók () metódust.
De még ennél is többet, és hozzon létre egy select-szűrő, és nem csak egy sor lehetőséget:
Most már tudjuk cserélni a vonal
Egy még egyszerűbb megoldás
Azonban JHtml nem több, mint egy szép csomagolópapír lehívására statikus módszerekkel. Senki sem tiltja a belépési pont regisztrálni segítője a autoloader:
És további kimeneti szűrő, mint ez:
Nem tudom, hogy melyik lehetőséget választja, de én személy szerint szívesebben használják JHtml.