Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] Symfony2 & Backbone.js pytań kilka
kpt_lucek
post
Post #1





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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ć (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
kpt_lucek
post
Post #3





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ą...

Ten post edytował kpt_lucek 18.10.2014, 11:45:43
Go to the top of the page
+Quote Post
by_ikar
post
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:52