Създаване на възел чрез персонализиран формуляр с помощта на модалния прозорец CTools

възел

Здравейте другари! Накрая завърших с друг проект и сега имам малко време да споделя моя опит и да говоря за техниките, които допринасят за подобряване на използваемостта на сайта. Ще започна, може би, като създам възли чрез моите собствени формуляри: как да показвам и обработвам такива формуляри в модални прозорци CTools, на блокове - и всичко това дори използване AJAX.

ctools

Мисля, че всеки разработчик поставя Модул CTools, не всеки обаче използва неговия API. Съгласете се, че в повечето случаи този Drupal модул е ​​инсталиран, защото е необходим Изгледи. Днес ще се опитаме да научим малко повече за този модул, а именно как да работим с модални прозорци.

Създаване на CTools бутони с AJAX

Първо, трябва да създадете връзка (или бутон), като щракнете върху която ще започне цялата магия. В моя случай показах тази връзка чрез персонализирано поле Views, но ще говоря за това в друга статия. Засега е достатъчно да знаете следното:

Създаване на възел чрез вашата собствена форма

Преди да пристъпя към описанието на функцията gm_deal_ctools_ajax_offer_deal (), вероятно ще ви кажа защо не използвах drupal_get_form () тук с идентификатор на формуляр за създаване на възел за сделка. Това е най-честата грешка, която зелените разработчици правят, когато става въпрос за създаване на персонализиран формуляр за създаване на възел.

Има два нюанса. Първият е, че трябва да свържете файла 'node.pages.inc', какво да правя $ form_state, в противен случай рискувате този файл да падне, ако има грешки при проверката. Това е същото като да се опитате да свържете .js файл с форма чрез drupal_add_js (), когато има $ form [‘# прикрепен’] [‘js’] масив. Като цяло, за да свържете файла правилно, трябва да използвате следната функция:

Вторият нюанс е, че за успешното създаване на възел, форма в $ form_state трябва да има обект на този много възел, който може да бъде предаден чрез допълнителни аргументи на drupal_get_form (). Разглеждайки тази функция, ще разберете, че тя не е нищо повече от добавка над drupal_build_form (), която всъщност възнамерявам да използвам.

Основната полза от използването на drupal_build_form () е, че можете да изграждате и преминавате $ form_state масив. Като начало има списък на помощната функция, която формира точно това $ form_state:

Е, сега е моментът да разкрием цялата тайна обратно извикване на менюто„A:

AJAX команди за работа с модални прозорци

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

изграждане

Също така можете да промените масива в AJAX команди и постигнете различен резултат - например затваряне на прозореца и презареждане на страницата, когато формулярът успее:

Това са изпълнените възможности Модул CTools. Съгласете се, че това изпълнение изглежда "модерно, модерно, младо" с помощта на AJAX, което трябва да повлияе на използваемостта на вашия сайт. Ще добавя също, че модалните прозорци са чудесно тематизирани от Bootstrap framework, за което писах в предишни материали.

И почти забравих: пакетът CTools съдържа модула 'ctools_ajax_sample', който веднъж ми помогна да разбера API за създаване на такива неща. Така че смейте!