Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Symfony2 & Backbone.js pytań kilka
Forum PHP.pl > Forum > Przedszkole
kpt_lucek
Witam wszystkich

Zwracam się z proźbą o pomoc przy wytłumaczeniu (może być czysta teoria, ale i przykładami nie wzgardzę) kilku kwestii odnośnie używania BB.js oraz SF2.
Jeżeli chodzi o moje doświaddczenie i stopień znajomości SF2 to myślę iż obie są na dość dobrym poziomie, niestety nie mogę tego powiedzieć o Backbone... Poniżej załączam kilka pytań wraz z opisem problemu i liczę na choć szczątkową pomoc.

Na obecną chwilę, skrypt który poddaję (a właściwie mam to w zamiarze) refactoringowi operuje na formularzach SF2 (formbuilder), mysql oraz pseudo kodzie w jQuery. Wygląda to mniej więcej tak iż w danym miejscu na stronie mam blok, do którego jest ładowana zawartość pobrana przez AJAXowe zapytanie w/w pseudo skryptu. Ładowany content jest wyrenderowanym formularzem i jest zwracany w formie html. Każdy z formularzy (tak, jest ich kilka) zawiera z góry nie określoną ilość pól (text, textarea, select2) oraz dwa buttony - "Pomiń" i "Aktualizuj".

- button "Pomiń" ma za zadanie odpytać akcję w controllerze o następny formularz i wstawić go na miejsce poprzedniego - obecnego. W przypadku gdy był to ostatni formularz, przeładować stronę.
- button "Aktualizuj" ma za zadanie wysłać formularz Ajaxem (wykonuje się dziwna logika, zapis do baz danych, cache etc.), po czym ma wykonać akcję "Pomiń" - załadować następny formularz.

Na obecną chwilę działa to i to działa całkiem znośnie. Problem pojawia się w momencie gdy chcę wstawić zamiast gołego jQuery jakiś framework - tutaj Backbone. Poczytałem, poszperałem i znalazłem informacje o tym jak zbudować kolekcję elementów, nadać im logikę itp.

Problem #1
W jaki sposób dostarczać formularz do backbone - w formie html (jak poprzednio?), json z informacjami jakie pola, jakie nazwy i jakie atrybuty, czy też...?

Problem #2
Tyle o ile budowanie kolekcji wszystkich formularzy nie sprawia problemu, to jak ja zdarzenie $.ready() załadować tylko i wyłącznie pierwszy, nadać obsługę buttona (jak w przypadku w/w skryptu jquery) "Pomiń" i "Zapisz"

Problem #3
Czy buttony "Pomiń" i "Zapisz" powinny przychodzić wraz z formularzem, czy to raczej Backbone powinien się zająć "dołączeniem" ich do formularza jak i nadaniem im logiki


Na obecną chwilę to chyba wszystko, bardzo miło było by, aby ktoś zaznajomiony z podobnym tematem zabrałby głos, liczę na pomoc teoretyczną, aczkolwiek jak już pisałem - praktyczny kawałek kodu też byłby mile widziany.


Dzięki i pozdrawiam
by_ikar
Cytat
Problem #1
W jaki sposób dostarczać formularz do backbone - w formie html (jak poprzednio?), json z informacjami jakie pola, jakie nazwy i jakie atrybuty, czy też...?

Jako json, a html rendruj po stronie backbona.

Cytat
Problem #3
Czy buttony "Pomiń" i "Zapisz" powinny przychodzić wraz z formularzem, czy to raczej Backbone powinien się zająć "dołączeniem" ich do formularza jak i nadaniem im logiki

Nie widzę problemu aby informacja na temat tych przycisków była wraz z polami formularza przesyłana w jsonie, a po stronie backbona to wszystko było odpowiednio obrabiane.

Cytat
Problem #2
Tyle o ile budowanie kolekcji wszystkich formularzy nie sprawia problemu, to jak ja zdarzenie $.ready() załadować tylko i wyłącznie pierwszy, nadać obsługę buttona (jak w przypadku w/w skryptu jquery) "Pomiń" i "Zapisz"

Nie bardzo rozumiem o co ci w tym pytaniu chodzi.

Generalnie to wyobraź sobie że backbon jest czymś w rodzaju twiga, czy innego systemu templatek. Twig nie bierze danych z kosmosu, ty mu te dane przesyłasz i na poziomie twiga tymi danymi manipulujesz (pętle, warunki etc). Więc tak samo potraktuj backbona, z tym że ty danych do backbona nie przesyłasz, a on te dane pobiera sobie sam (poprzez restowe requesty). Nie wiem jak bym mógł ci to inaczej wytłumaczyć wink.gif
kpt_lucek
Wielkie dzięki za odpowiedź

co do problemu #2... Cóż postaram się jaśniej:

Response zwraca mi dane w formacie JSON odnośnie formularza "n", jest on renderowany przez BB i załączony system templatek i... wszystko ładnie i pięknie, teraz pytanie - jak dodać akcję do przycisków, tak aby po ich naciśnięciu został wysłany request o formularz n+1 itd...? (miej na uwadze iż akcja "Pomiń" nie ustawi formularza n jako zrobionego, czytaj - odpytanie tego samego requesta zwróci dokładnie ten sam formularz - dołączenie parametrów?).

Nie ukrywam że na razie ciężko widzę zaznajomienie się z "nową" technologią...
by_ikar
Nadal nie jestem pewien czy dobrze rozumiem, ale jeżeli chodzi ci o eventy, no to nic prostszego. Do swojego widoku możesz przypisać x eventów, które wywołają odpowiednie funkcje/metody. http://backbonejs.org/#Events eventy możesz podpinać pod różne rzeczy, te znane z jquery (click, mouseover, submit etc), lub stworzyć jakieś swoje. W widoku podpina się zdarzenia mniej wiecej tak:

[JAVASCRIPT] pobierz, plaintext
  1. var Form = Backbone.View.extend({
  2.  
  3. events: {
  4. "submit #form": "preSubmit",
  5. },
  6.  
  7. preSubmit: function(el){
  8. /** do something **/
  9. },
  10.  
  11. initialize: function() {
  12. /** **/
  13. },
  14.  
  15. render: function() {
  16. /** **/
  17. }
  18.  
  19. });
[JAVASCRIPT] pobierz, plaintext


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.