Dynamiczna strona Ajax

Witam. Zaczynam z tym frameworkiem i edytuję sobie tak powoli tę stronę testową dla edukacji i nasuwa mi się pytanie. Czy za pomocą Yii można pisać stronę na ajaxie że strona nie bedzie się nigdy cała przeładowywać? Chodzi mi głównie o to czy w takim wypadku ten framework jest przydatny czy też nie. Tak na logike chyba nie jest.

Można, przecież to PHP :) Wg mnie sam jeszcze dobrze go nie znam. Ale wydaje mi się ze w javascripcie robisz sobie $.ajax() -> jQuery i wysylasz to do kontrolera, ktory zwraca Ci jakies dane. Nastepnie metoda success $.ajaxa appendujesz zwrocone dane na strone.

Co więcej, jeżeli nie chcesz mieć jakiś specjalnych wodotrysków, to nawet bez Javascript się obejdzie.

Zacznij od przeczytania dokumentacji Jquery do funkcji ajax. Potem, otwórz sobie dokumentację klasy CHtml i najlepiej przejrzyj całą :) bo jest tam bardzo dużo fajnych funkcji pomocniczych. Na pewno przeczytaj jednak opis ajax, a później ajaxLink. Ogólnie sprowadza się to do utworzenia linku poprzez ajaxLink w którym podajesz kontroler, akcje i ewentualnie parametry do przekazania, oraz id elementu który ma zostać odświeżony (np masz div z id ‘#content’). W konretnej akcji sprawdzasz czy zapytanie jest ajaxowe i wywołujesz render partial. Jeżeli nie jest ajaxowe to wywołujesz render. W ten sposób wyszukiwarki oraz użytkownicy mogą przejść od razu na podstronę, ale po otworzeniu strony linki są ajaxowe, więc przeładuje im się tylko wskazany div.

To tak na początek. Później możesz sobie podopisywać obsługę zdarzeń w JQuery, czyli możesz na przykład dodać jakieś animacje, preloadery itp, itd.

Ja dość znam ogólny programing w językach php, html, ajax, js jquery etc. Tylko nie zabardzo wiem czy to się jakoś inaczej piszę w frameworku, czy na normalnym html? Co prawda kolega sidewinder, podpowiada mi już coś ale nie bardzo wiem jak się do tego zabrać.

Czy mógłbym otrzymać przykład jakiś jak zastosować ajax aby pobrać to co widzi w pliku "includowanym"?

W "normalnym" ajax by było tak:


$.ajax({

    url: "plik_includowany.php"

    data: {

      parametr:"costam"

    },

    success: function(data){

       $('#main').html(data);

    }

});

Oj, jest trochę różnic między "normalnym" php a frameworkiem Yii. Przeczytaj sobie Przewodnik po Yii. Tutaj nie ma includowania plików takiego jak znasz z aplikacji w 4 plikach. Tutaj jest klasa autoloadera, która dba o to, żeby odpowiednie pliki były ładowane tylko wtedy, kiedy są potrzebne. Adresy podaje się jako tablica, gdzie pierwszy element to ścieżka do kontrolera/akcji a kolejne elementy to parametry przekazywane w adresie. Klasa CUrlManager generuje z tego odpowiedni adres. Piszę o tym dlatego, że po pytaniu które zadałeś wydaje mi się, że nie przeczytałeś jak jest zbudowane Yii.

Jeżeli jednak Cię to nie interesuje i chcesz przejść od razu do asynchronicznego JS to proszę bardzo: Ajax + partialRender. Tylko spodziewaj się mnóstwa kłopotów i wyboistej drogi pod górę, jeżeli nie poznasz o co chodzi z MVC zanim zaczniesz coś pisać…

Tutaj masz przykłady działania ajax w Yii:

www.yiiplayground.cubedwater.com/index.php?r=AjaxModule/ajax/ajaxRequest

Pooglądaj przykłady na tej stronie, koniecznie poczytaj trochę www.yiiframework.com/doc/guide/1.1/pl/index i mozesz śmiało zaczynać :)

Ok. Interesuję mnie jeszcze taka rzecz dotycząca "nice url", dałem w konfiguracji aby robił mi linki w formie "path" ale występuję index.php w url. Czy da się go wywalić aby nie było go widać?

Aktualnie jest:


http://domena.pl/index.php/costam/costam

A miało by być:


http://domena.pl/costam/costam/

Da się w tym Yii tak ustawić?

PS: Jest tu system powiadomień?

Wystarczy otworzyć dokumentacje:

Przewodnik po Yii->Zarządzanie adresami URL->ukrywanie index.php http://www.yiiframework.com/doc/guide/1.1/pl/topics.url#ukrywanie-x-23x

"Tu" czyli na forum? Settings->Notifications

Ok. Przeczytałem od góry do formularzy i nie zabardzo rozumiem jak mam posklejać aby zrobić podstrony oraz linki do nich i formularze. Może ktoś mi wytłumaczyć? Ew. opisać "step and step" jak pisać w "stylu yii".

Link: http://www.yiiframework.com/doc/guide/1.1/pl/form.builder#tworzenie-prostego-formularza

Bardzo proszę.

Edit:

Nie otrzymam odpowiedzi?

Witajcie,

Odgrzewam temat. A co myślicie o naszej wtyczce jQuery? Pozwala na szybką obsługę stron opartych w pełni na AJAX, przy zachowaniu linkowania i widoczności dla Google:

www.implico.pl/ajaxgetcontent_dynamiczna_strona_ajax,7.html

Przykładowe zastosowania:

www.implico.pl (strona firmowa)

www.ptchprie.pl (Polskie Towarzystwo Chirurgii Plastycznej)

www.finestra.pl (producent okien PCV)

www.klin-winter.pl (hurtownia AGD)

www.boone.pl (producent odzieży)

www.sportolimp.pl (hurtownia art. sportowych)

Czekamy na uwagi :)

Poprzez chwilę użytkowania poniższe błędy rzuciły mi się w oczy:

  • brak edycji tytułu strony (tag title, pół biedy jeśli tylko przeglądam, jednak gdy chcę dodać do zakładek?)

  • Google Chrome: kiepska obsługa scrolla, mogę poklikać jednak nie przynosi to oczekiwanego efektu (otworzenia linku w nowej karcie, jedynie załadowanie contentu via ajax)

@Black.cat: dziękujemy za info. Co do braku zmiany tytułu strony - to już kwestia implementacji, zaktualizowaliśmy właśnie naszą stronę w celach demonstracyjnych. Jeśli chodzi o środkowy przycisk myszy - poprawka pojawi się w najbliższej wersji.