PDA

Zobacz pełną wersję : Ajax w komponencie i widoki - problem



antost
23-10-2012, 11:14
Witam.
Generuje rządanie POST ajaxem za pomocą jQuery.
Chciałbym osiągnąć następującą rzecz:

1. wysyłam postem dane, np {view: 'ajaxview', task: 'ajax' }
2. i teraz chciałbym otrzymać tylko i wyłącznie np dane w postaci jsona (dane pobieram z bazy za pomocą modelu)

Problem polega na tym, że zamiast czystego jsona otrzymuje cały widok czyli headery, memu admina itd.
Co mam zrobić aby otrzymać sam json z modelu bez renderowania zaplecza ?

Dodam, że joomlą zajmuję się od 2 dni i może pytam o rzecz oczywistą :).
Dodam analogię np z CakePHP - jeśli nie chciałem aby renderował mi się jakikolwiek widok to dawałem w kontrolerze $this->layout = false;

Proszę o pomoc.

pawelSafiStudio
23-10-2012, 14:26
Całą akcję zakończ na poziomie pliku view.html.pdf. Dodaj konkretną metodę dla ajax'a (tam wyświetl sobie kod jsona, których chcesz zwrócić), po czym nie wykonuj parent::display w tej metodzie tylko daj na końcu exit.

antost
23-10-2012, 15:15
Dzięki za odpowiedź.
Dałem w metodzie
public function ajax() { ...} tak jak mi pisałeś exit i pomogło - wielkie dzięki.
W między czasie znalazłem inne rozwiązanie.
Do szablonu/widoku o nazwie ajax dodałem:

$app = &JFactory::getApplication();
$app->close();


Tak też działa ale Twój sposób jest bardziej elegancki :).

pawelSafiStudio
23-10-2012, 15:50
Tzn bardziej eleganckie jest to z $app->close() :) To co Ci podałem to twarde zamknięcie aplikacji bez zwalniania zasobów etc. Więc może lepiej stosuj $app->close(). Ja o tym całkowicie zapomniałem (przyznam się, że zawsze używałem exit z lenistwa ;))
------------------------
Sprawdziłem jak działa $app->close(). W sumie metoda wykonuje polecenie exit z ew. kodem zamknięcia aplikacji. Więc w Twoim przypadku samo exit w zupełności wystarczy :)


/**
* Exit the application.
*
* @access public
* @param int Exit code
*/
function close( $code = 0 ) {
exit($code);
}