Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] zmienne z akcji do komponentu
AxZx
post 3.03.2009, 00:53:53
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam,

czy można w jakiś sposób przekazać zmienne z akcji do komponentu, który mam wstawiony w layout.php?
w akcji pobieram jakieś dane, które wyświetlane są w widoku, ale niektóre dane potrzebowałbym przenieść do widoku komponentu.
jak to można rozwiązać?

chyba popularne zastosowanie (albo rozwiązanie tego) to menu.
menu jak wiadomo wyświetlane jest praktycznie na każdej podstronie. w zależności od tego którą pozycję w menu wybierzemy wyświetlana jest przypisana podstrona, a jako dodatek rozwijane jest podmenu.
żeby to podmenu mogło być rozwinięte komponent menu musi wiedzieć, które menu zostało wybrane. można pobierać z URL, ale jak w URL jest identyfikator tekstowy a w bazie liczbowy to jest problem.

dlatego w akcji pobierany jest dany obiekt przez ten identyfikator tekstowy, a do komponentu chcę przekazać ID liczbowy.

za pomysły i pomoc z góry dziękuję.
pozdrawiam

EDIT:
oświecenie:P

można to zrobić korzystając z metod sfConfig::set w akcji i sfConfig::get w component.
blinksmiley.gif


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Foxx
post 3.03.2009, 00:58:47
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Hm, szczerze mówiąc nie wiem dlaczego masz problem:

Cytat
Just like the partials, components accept additional parameters in the shape of an associative array. The parameters are available to the partial under their name, and in the component via the $this object. See Listing 7-13 for an example.

Listing 7-13 - Passing Parameters to a Component and Its Template
  1. // Call to the component
  2. <?php include_component('news', 'headlines', array('foo' => 'bar')) ?>
  3.  
  4. // In the component itself
  5. echo $this->foo;
  6. => 'bar'
  7.  
  8. // In the _headlines.php partial
  9. echo $foo;
  10. => 'bar'
Go to the top of the page
+Quote Post
AxZx
post 3.03.2009, 01:09:40
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


Cytat(Foxx @ 3.03.2009, 00:58:47 ) *
Hm, szczerze mówiąc nie wiem dlaczego masz problem:


rozumiem, że chcesz się dowiedzieć udzielając się?smile.gif

to jeszcze chwilę posiedzę przy komputerku specjalnie dla Ciebie i napiszę Ci. postaram się trochę jaśniej, bo może ten opis u góry trochę zagmatwany.

  1. <?php
  2. #plik 1 - apps/frontend/module/banner/actions/components.class.php
  3. #plik 2 - apps/frontend/module/kategoria/actions/actions.class.php
  4. #plik 3 - apps/frontend/templates/layout.php
  5. ?>


chyba nie trzeba objaśniać, wiadomo co w każdym pliku się znajduje (komponent, akcje, widok).
w pliku 1 pobierane są z bazy dane na temat bannerów.
w akcji w pliku 2 pobierane są dane odnośnie kategorii.
dane z pliku 2 mają trafić do komponent w pliku 1, który jest wywoływany w pliku 3.
proste?smile.gif ano proste heh.

dobranoc.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Foxx
post 3.03.2009, 01:28:14
Post #4





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Rozumiem, z pierwszego posta zrozumiałem, że masz po prostu problem z przekazaniem danych z akcji do komponentu. Dobrej nocy.
Go to the top of the page
+Quote Post
Lonas
post 3.03.2009, 08:46:48
Post #5





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Ja sobie to rozwiązałem za pomoca partiali i w layout-cie wyglada to tak :

  1. <?php include_partial('global/comments', array('comments' => Comments::Lastcomments(3,NULL,NULL))) ?>


--------------------
Go to the top of the page
+Quote Post
AxZx
post 3.03.2009, 11:34:12
Post #6





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


Cytat(Lonas @ 3.03.2009, 08:46:48 ) *
Ja sobie to rozwiązałem za pomoca partiali i w layout-cie wyglada to tak :

  1. <?php
  2. Comments::Lastcomments(3,NULL,NULL))) ?>


ale nie widzę, żebyś przekazywał jakoś dane z innej akcji do tego partiala.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
arecki
post 3.03.2009, 12:35:36
Post #7





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


Cytat(AxZx @ 3.03.2009, 01:09:40 ) *
  1. <?php
  2. #plik 1 - apps/frontend/module/banner/actions/components.class.php
  3. #plik 2 - apps/frontend/module/kategoria/actions/actions.class.php
  4. #plik 3 - apps/frontend/templates/layout.php
  5. ?>


w pliku 1 pobierane są z bazy dane na temat bannerów.
w akcji w pliku 2 pobierane są dane odnośnie kategorii.
dane z pliku 2 mają trafić do komponent w pliku 1, który jest wywoływany w pliku 3.


Akcja z pliku 2 ma jakiś szablon prawda ? Zdefiniuj w nim slot i wypełnij do danymi które chcesz mieć gdzie indziej a w szablonie w pliku 3 sprawdzaj czy slot istnieje i jeżeli tak to wyświetl go.
Jako że w kolejności najpierw inicjalizowany jest widok dla akcji a później jest dekorowanie do layoutem to powinno zadziałać Ci to jak chcesz.


--------------------
Go to the top of the page
+Quote Post
LBO
post 3.03.2009, 14:46:08
Post #8





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


a to nie jest tak, że jak umieścisz zmienną w szablonie akcji, to jest ona dostepna we wrapperze?
Go to the top of the page
+Quote Post
AxZx
post 3.03.2009, 15:04:11
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


Cytat(LBO @ 3.03.2009, 14:46:08 ) *
a to nie jest tak, że jak umieścisz zmienną w szablonie akcji, to jest ona dostepna we wrapperze?


a jak się dobrać do wrappera w layout.php ?


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
LBO
post 3.03.2009, 15:21:14
Post #10





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


sorry... wrapper=layout

Strzelam z tym powyżej, bo nie znam jeszcze takich kruczków w SF

edit:

Zapomnij co napisałem wyżej, tak było kiedyś za czasów SF 1.0.

Teraz wszędzie polecają to.

edit:

Nie zauważyłem, że @arecki już odpowiedział.

Ten post edytował LBO 3.03.2009, 15:24:24
Go to the top of the page
+Quote Post
AxZx
post 3.03.2009, 15:29:54
Post #11





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


Cytat(LBO @ 3.03.2009, 15:21:14 ) *
sorry... wrapper=layout

Strzelam z tym powyżej, bo nie znam jeszcze takich kruczków w SF

edit:

Zapomnij co napisałem wyżej, tak było kiedyś za czasów SF 1.0.

Teraz wszędzie polecają to.

edit:

Nie zauważyłem, że @arecki już odpowiedział.


dzięki. będę wiedział na przyszłość:)

rozwiązanie z sfConfig::get jest o tyle lepsze, że nie mogę od razu w komponencie sprawdzać czy jest ustawiona jakaś wartość, np sfConfig::get('idkategoria').
nie muszę przekazywać z layoutu do komponentu tylko bezpośrednio w nim odczytuje.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.06.2025 - 03:13