Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] potrzebne przekierowanie z pluginu ?
trucksweb
post
Post #1





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


robie w celach naukowych plugin do komentowania wszystkiego co sie chce- narazie pod uwage wzialem content.

w szablonie newsa includuje component i ten poprawnie sie laduje. w action dalem mu link do danego artykulu.
Teraz w jaki sposob wywolac zapis do bazy-tzn. zeby po wyslaniu postem odswiezyla mi sie strona i dodal wpis do bazy.

Potrzebny jest do tego routing zeby najpierw wszedl do pluginu/componentu?

jakos sie zgubilem patrzac na przykladowe pluginy z symfony
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Cytat
w action dalem mu link do danego artykulu

Raczej powinieneś dać adres do akcji w swoim komponencie, która odpowiada za dodanie komentarza.

Cytat
zeby po wyslaniu postem odswiezyla mi sie strona i dodal wpis do bazy.

Takie rzeczy to bez problemów znajdziesz w dokumentacji.

Cytat
Potrzebny jest do tego routing zeby najpierw wszedl do pluginu/componentu?

Routing jest potrzebny.


Nie jestem pewien ale mam wrażenie, że masz jakiś błąd w założeniach, więc dla jasności:
  1. Użytkownik wchodzi na stronę artykułu:
    • na tej stronie ma wyświetlony artykuł oraz komentarze
    • komentarze to komponent w Twoim pluginie
    • formularz dodawania komentarza powinien kierować do akcji w pluginie
  2. Użytkownik wypełnił formularz i wysłał go:
    • akcja w pluginie zapisuje komentarz
  3. Użytkownik jest przekierowywany:
    • możesz przekierować na podstawie nagłówka referer
    • albo możesz rozpoznać dla jakiego obiektu komentarz został dodany i przekierować na jego stronę
Go to the top of the page
+Quote Post
trucksweb
post
Post #3





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


tak, tak wszystko sie zgadza ...ale teoretycznie

w szablonie artykulu mam:
  1. include_component('comment', 'form', array('comment_form' => isset($comment_form) ? $comment_form : null)

ktory wyswietla formularz kierujacy do akcji comment/add.

W akcji comment/add mam:

  1. if($request->isMethod(sfRequest::POST))
  2. {
  3. $this->comment_form = new ContentCommentForm();
  4. $formValues = $request->getParameter('catalog_comment');
  5.  
  6. $this->comment_form->bind(array_merge($formValues, array('captcha' => $formValues['captcha'])));
  7.  
  8. if ($this->comment_form->isValid())
  9. {
  10. $this->comment_form->save();
  11. }
  12. else
  13. {
  14. $referer = str_replace($request->getScriptName(), '', $formValues['referer']);
  15. $params = $this->getContext()->getRouting()->parse($referer);
  16. unset($params['_sf_route']);
  17. $url_params = $this->getContext()->getController()->convertUrlStringToParameters($referer);
  18. $url_params = array_merge($params, $url_params[1]);
  19.  
  20. foreach ($params as $param => $value)
  21. {
  22. $request->setParameter($param, $value);
  23. }
  24.  
  25. $this->forward($params['module'], $params['action'], array('comment_form' => 'ffff'));
  26. }
  27. }



no i teraz, jak wypelnie formularz poprawnie to dokona sie zapis do bazy, ale jesli zrobie blad to po odswiezeniu strony nie robi sie repopulacja formularza.
Czyli w momencie forwardu do akcji artykulu nie mam dostepu do zmiennej $this->comment_form

Czy cos robie zle ?
Go to the top of the page
+Quote Post
destroyerr
post
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Cytat
Czyli w momencie forwardu do akcji artykulu nie mam dostepu do zmiennej $this->comment_form

Napisz jeszcze gdzie nie masz tego dostępu.

Moim zdaniem komentarze i (np.) newsy nie powinny sobie przekazywać żadnych formularzy (tak jak zrobiłeś to w szablonie).
Formularz powinien być jeśli już (ale też niekoniecznie musi) przekazywany tylko między akcją dodawania komentarza i komponentem wyświetlania komentarzy.
Go to the top of the page
+Quote Post
trucksweb
post
Post #5





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


mam tak jak napisales:

Użytkownik wchodzi na stronę artykułu:
-na tej stronie ma wyświetlony artykuł oraz komentarze
-komentarze to komponent w Twoim pluginie - tu mam include_component('comment', 'form', array('comment_form' => isset($comment_form) ? $comment_form : null)
-formularz dodawania komentarza powinien kierować do akcji w pluginie (i kieruje comment/add)
Użytkownik wypełnił formularz i wysłał go:
-akcja w pluginie zapisuje komentarz (akcja comment/add zapisuej jesli jest ok, jesli nie powinna repopulowac formularz)
Użytkownik jest przekierowywany:
-możesz przekierować na podstawie nagłówka referer (przekierowanie dziala, ale formularz nie ma repopulacji)
-albo możesz rozpoznać dla jakiego obiektu komentarz został dodany i przekierować na jego stronę

Go to the top of the page
+Quote Post
jaro87
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 7
Dołączył: 10.03.2011
Skąd: Wrocław

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


Zobacz sobie na stronie Symfony jak zrobione są gotowe pluginy tego typu (podałbym link ale wyświetla mi się "Wpisałeś link do strony do której administrator nie pozwala linkować") Używałem tylko sfPropelActAsCommentableBehaviorPlugin ale pozostałe, sądzą po opisach mają podobną funkcjonalność(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
trucksweb
post
Post #7





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


ok, przerobilem na ajaxa i dziala ok.

tez patrzylem na ten plugin, ale nie rozumialem kilku rzeczy ktore sa w nim zdefiniowane a narazie nie mam czasu doszukiwac sie tego w dokumentacji.

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: 3.10.2025 - 01:03