AJAX в Joomla! 2
Лирично отклонение
Също така веднага ще ви предупредя, че темата е написана от позицията на „начинаещ в Joomla“. Задачата пред мен беше тривиална: да направя AJAX заявка от страницата и да получа отговор във формат JSON. Без никакво подозрение вкарах в търсенето и вместо няколко минути ровене, останах да търся решение няколко часа. Разбира се, не пренебрегнах и темата на уважаемия проповедник. Но веднага се оказа, че това решение с параметъраtmpl=componentне ми подхожда: Отговорът дойде под формата на пълноценна страница с всички заглавки, стилове, включени в тези заглавки, и всъщност JSON отговорът, който показах в изгледа на моя компонент, вътре в етикета body, но, както беше обещано, без менюта и друго великолепие на допълнителни модули. Разбира се, ако използвах рамка на страницата и дадох същия HTML отговор, всичко е наред, но уви. Възможно е да използвате патерици под формата на издърпване на текст от етикета на тялото на получената страница или втората опция, предложена от propovednik, но някак неудобно, искам да намеря по-„чисто“ решение. И не ми беше дадена идеята, че такова чудовище като Joomla няма елементарно решение. Poryskav малко повече, на буржоазния форум попадна на линк. Накратко: за Joomla 3 са написали специален компонент за работа с AJAX (смътно си спомням, че дори го включиха от кутията), но той е съвместим и с версия 2.5. Това ме накара да мисля, че все още няма готово решение за 2.5, като същия index2.php във версия 1.5. Но ние не търсим лесни пътища и решението да инсталираме друг компонент не е за нас! Тогава реших да видя какво са използвали в техния компонент.
И решението се оказа елементарно. Да предположим, че вашият компонент има специален изглед със своя модел, койтоотговарят за извеждането на JSON или XML, от които се нуждаете. Просто трябва да пренесете default.php в tmpl папката на вашия View до следното
където $this->текст са данните, получени в модела на вашия изглед.
Това е всичко, благодаря за вниманието!
В анкетата могат да участват само регистрирани потребители. Влез Моля.