ПредишенСледващото

Част 16 - Добавя филтър и се научи да създадете свой собствен

Филтри значително да подобрят удобството на списък на управлението на документите в администраторския панел.

Като цяло, ние ще добавим три филтъра:

Аз също ви покажа колко лесно можете да създадете свои собствени филтри, използвайки JHtml клас.

Променящите се модели на списъка със съобщения

Така че, отворен администратор / модели / helloworlds.php файл и да започнат да се правят промени.

извадковите данни за образуване на списъка ви се случва в метод getListQuery (). Нека да видим как тя се е променила:

На първо място, използвайте метода за бягство (), ние щит на специални символи като "%", които могат да се съдържат в заявката за търсене. След това се оформят заявката в кавички, но не щит на него, като преминава фалшива като вторият аргумент да цитирам () метод.

Филтриране на стойностите, които получаваме от държавния модел. Следователно е необходимо да се добавят тези стойности да се получи метод populateState ():

Тук ние получаваме и задайте стойностите на нашите филтри. В този случай, ние използваме метод getUserStateFromRequest (). която е на разположение при нас от JModelList основния клас. Този метод получава стойността на потребителя (сесия) на държавната променлива и повторни набори тази стойност, в случай на промени. За стойности в държавата на потребителя са уникални сред различните компоненти, които използваме имот $ това-> контекст на JModel основния клас. който се намира в своя конструктор.

В резултат на това, ние получаваме ефект памет филтърни стойности на. Ти си вероятно ще се обърне внимание на това, когато се работи с Joomla - филтри се запазват при превключване между компоненти, толкова дълго, колкото не излизам от администраторския панел. Само ако е налице повторно състоянието на потребителя и съответно филтри.

Ние също трябва да добавите метод getStoreId ():

Този метод се използва за данни за кеширане. В него се вземе предвид сегашното състояние на филтъра, което е необходимо да се генерира уникален номер на магазина. Той обикновено се използва в клас родител JModelList. къде е ключът към $ кеш имот масив.

промяна помощник

Променете изгледа на списъка със съобщения

Тъй като ние вече имаме статута филтър съобщения, ние може да се промени логиката да изтриете съобщения. На първо място, ние ще ги тури в кошница, и можете да изтриете само съобщенията, които вече са били поставени в кошницата. За да направите това, addToolBar малко промяна () метод:

Сега, след като състоянието на стойността на филтъра ще бъде равна на 2 (в коша) ще трябва да се появи бутона "Empty Trash". В противен случай, той ще се появи на мястото на бутона "Добави в кошницата".

Променете списък съобщение шаблони

Първо, промяна на майстор шаблон администратор / възгледи / helloworlds / TMPL / default.php и добавяне на филтри:

Виждаме, че всички списъци са изградени с помощта на JHtml клас. По принцип, цялата идея се свежда до, за да получите чрез JHtml набор от опции за падащия списък. В края на тази статия, аз ще ви покажа как да създадете свои собствени филтри с този клас.

Текущите стойности на филтъра, които вземаме от държавния модел. Също така трябва да се отбележи, че всяка промяна на филтрите води до формулярът се подава с помощта this.form.submit ().

А под-шаблон администратор / възгледи / helloworlds ColSpan / TMPL / default_foot.php myuvelichivaem стойност:

Резултатът тук е снимка:

Променете постовете контролер

Open администратор / контролер / helloworld.php файл и се прави една малка промяна в allowAdd () метод - промяна на линия

Ние просто добавената стойност по подразбиране, което е взето от филтъра.

Промяна на формата файл

В формата на файла, трябва да добавите две стойности състояние:

Open администратор / модели / форми / helloworld.xml файл и добавяне на полето, за да изложи тези две стойности:

Добавяне на език константа

Отваряне на файл администратор / език / ан-GB / EN-GB.com_helloworld.ini и добавете:

COM_HELLOWORLD_FILTER_SEARCH_DESC = "Можете да търсите по никакъв текст за поздрав."
COM_HELLOWORLD_N_ITEMS_ARCHIVED_1 = "Едно съобщение архивирани"
COM_HELLOWORLD_N_ITEMS_ARCHIVED = ". Съобщенията архивирани"
COM_HELLOWORLD_N_ITEMS_TRASHED_1 = "Едно съобщение изхвърлена"
COM_HELLOWORLD_N_ITEMS_TRASHED = ". Съобщения изхвърлена"

Open администратор / език / RU-RU / RU-RU.com_helloworld.ini файл и добавете:

COM_HELLOWORLD_FILTER_SEARCH_DESC = "Можете да търсите за всеки текст в поздрав."
COM_HELLOWORLD_N_ITEMS_ARCHIVED_1 = "1 съобщение архивиране"
COM_HELLOWORLD_N_ITEMS_ARCHIVED_2 = ". Съобщенията са архивирани"
COM_HELLOWORLD_N_ITEMS_ARCHIVED_MORE = ". Съобщението архивиране"
COM_HELLOWORLD_N_ITEMS_TRASHED_1 = "1 съобщение се поставя в количката за пазаруване"
COM_HELLOWORLD_N_ITEMS_TRASHED_2 = ". Съобщенията се поставят в кошницата за пазаруване"
COM_HELLOWORLD_N_ITEMS_TRASHED_MORE = ". Съобщенията се поставят в кошницата за пазаруване"

Поставянето на инсталационен пакет на компонента

Не забравяйте да смените номера на версията в helloworld.xml на файла:

Съдържанието на директорията с кода:

Опаковайте директорията на архивен файл (с цип, катран, tar.gz, bz2), или да го изтеглите директно в GitHub. На следващо място, инсталирайте посредством мениджъра на разширение Joomla. Сега в списъка на запис се появява Филтри.

Кодът за тази част

Създайте свои собствени филтри, използващи JHtml клас

Създайте свои собствени филтри с JHtml съвсем проста. Да си представим, че вградената състоянието на филтъра не е на разположение в Joomla, така че ние трябва да създадете свой собствен.

Първото нещо, което да направите, е да се уточни JHtml клас. къде да търсите за файлове, които определят нашите функции за работа с филтри. Това се извършва чрез метод addIncludePath (). Да приемем, че ние ще се съхранява тези файлове в папката / администратор / помагачи / HTML. а след това на входна точка /admin/helloworld.php добавим:

След това създайте в тази папка filters.php файл със следното съдържание:

Сега можем да се замени линия

Всичко работи така, сякаш ние използвахме вградения Joomla състояние филтъра.

Но JHtml прецени, че е необходимо да се обадите на метод stateOptions () HelloWorldHtmlFilters клас filters.php файл. Мисля, че може би се досещате, че отговорът се крие в ключа на "helloworldhtml.filters.stateOptions. JHtml който анализира следните компоненти:

  • първият сегмент - клас префикс, а ако не е определено, на JHtml;
  • вторият сегмент - на името на файла
  • третият сегмент - метод клас

В този случай, за името на класа JHtml комбинира първия и втория сегмент. По този начин, знае ключа, лесно можете да намерите на разположение в Joomla класове, които работят не само с филтри, но с различни елементи като "дата", "плъзгачи", и т.н. Например, ние използваме ключа в "select.options" филтрите ще доведе до библиотеките на файловете / Joomla / HTML / HTML / select.php където можете да намерите (метод JHtmlSelect клас и опции).

Но ние можем да отидем още по-далеч и да се създаде изберете-филтър, а не само един набор от възможности:

Сега можем да се замени линия

още по-лесно опция

Въпреки това, JHtml не повече от красива опаковъчна за свикване на статични методи. Никой не забранява на входната точка за регистриране на помощник в AutoLoader:

И по-нататък изход филтър като този:

Аз не знам кой вариант предпочитате, но аз лично предпочитам да използвам JHtml.

Подкрепете проекта - споделете линка, благодаря!