Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Tworzenie linków za pomoca view helpera
phpmack
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


Witam - kolejne dziwne pytanie z mojej strony;)

Jak generować linki wewnątrz własnego view helpera ?

generalnie w widoku używam takiej składni:
  1. <a href="'.$this->url(array('controller' => 'users', 'action' => 'login'))


ale chciałbym umieścić parę pierdoł w heperze widoku - bo mój layout zawiera więcej "ifów" i "elsów" niż layoutu
problem w tym że .$this->url sam jest helperem i nie mogę go użyć w moim helperze widoku.... czy mogę?

Wpisałem na sztywno url w linku tyle że teraz w zależności od konfiguracji serwera będę musiał edytować wszystkie linki :/

Ten post edytował phpmack 11.11.2011, 19:17:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
MitS
post
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


mozesz - Zend_View_Helper_Url::url()
Go to the top of the page
+Quote Post
phpmack
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


Cytat(MitS @ 11.11.2011, 20:58:35 ) *
mozesz - Zend_View_Helper_Url::url()

Działa! dzięki

mam jeszcze jedno szybkie pytanie - co w przypadku gdy akcja wymaga parametru? czy da się za pomocą Zend_View_Helper_Url::url() przekazać parametr do akcji? próbowałem różnych kombinacji ale niestety nie działa...
  1. $link = '<a href="'.Zend_View_Helper_Url::url(array('controller' => 'index', 'action' => 'show', 'param1' => '1')).'">wykonaj</a>';


  1. $this->_getParam('param1');
pomogło (IMG:style_emoticons/default/wink.gif)

Jednak nie jest aż tak różowo
1. W jaki sposób poprawnie przekazać parametr do wywoływanej akcji, jeśli zrobię tak jak powyżej za pomocą url to _getParam mogę użyć dopiero w samej akcji więc w momencie wywołania wywala mi warning ponieważ akcja nie dostaje zdefiniowanego parametru przy wywołaniu... ustawiłem domyślną wartość parametru w akcji ale to takie rozwiązanie trochę na około:/ jakieś sugestie?
2. w moim sposobie parametry jawnie podawane są w url i nie bardzo to mi pasuje - są to dane które nie powinny być widoczne np. nr. telefonu itd. W zasadzie próbuje zrobić prostą rzecz, potrzebuje kilka buttonów które będą wywoływać poszczególne akcje i w zależności od sytuacji generuje link z odpowiednim parametrem który uruchamia akcje.... co można z tym zrobić żeby wyeliminować te niedogodności?

Pozdrawiam

Ten post edytował phpmack 12.11.2011, 17:57:16
Go to the top of the page
+Quote Post
MitS
post
Post #4





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


Zend_View_Helper_Url:url() to jest to samo co w widoku $this->url()

wiec nie wiem co ty chcesz zrealizowac.
Pokaz kod i przykład co chcesz uzyskac.

Bo poprawnie pobierasz dane z parametru: $this->_getParam('param1');
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Nie bardzo rozumiem efekt, który chcesz osiągnąć. Jeśli chcesz ustawić jakiś parametr by mieć do niego dostęp w innych akcjach to użyj setParam.
Go to the top of the page
+Quote Post
IceManSpy
post
Post #6





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


Pewno chodzi mu o to, aby wygenerował się link w np do edycji usera:
www.costam.pl/user/edit/id/1 , gdzie id to parametr, a 1 to wartość tego parametru.

Ten post edytował IceManSpy 12.11.2011, 19:17:39
Go to the top of the page
+Quote Post
phpmack
post
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


Próbuje wygenerować link który uruchomi akcję z parametrem np w widoku mam tak:
  1. echo '<a href="'.Zend_View_Helper_Url::url(array('controller' => 'index', 'action' => 'showuser', 'param2' => $user_id)).'">'.$this->escape($user->user_name).'</a>';


  1. public function showuserAction($user_id = 0)//domyślnie "zero" aby nie wywalało ostrzeżenia
  2. {
  3. $user_id = $this->_getParam('param2');
  4.  
  5. $tab_users = new Application_Model_DbTable_Users();
  6.  
  7. $user = $tab_users->getUser_by_userid($user_id);
  8.  
  9. $this->view->user = $user;
  10.  
  11. }


link a raczej linki tworze w pętli która ustawia mi odpowiednią nazwę linka i parametr dla akcji tyle tylko że po kliknięciu na ten link akcja wywoła się bez parametru a jego wartość pobieram dopiero we "wnętrzu" akcji za pomocą _getParam() w związku z tym dostaje warning że przy wywołaniu jest brak wymaganego parametru - z tego wniosek że mój sposób jest mało poprawny
No i druga sprawa że w ten sposób przekazane parametry lecą jawnie poprzez url i wszystko jest widoczne.

Chciałbym osiągnąć coś takiego: Loguje się jako admin pobieram z DB tablicę użytkowników za pomocą foreach() wyświetlam listę tych użytkowników ale jako linki które uruchomią akcja pokazującą szczegóły użytkownika. Do akcji "pokaż użytkownika" muszę przekazać parametr np. id , nr tel czy cokolwiek alby zidentyfikować użytkownika do wyświetlenia. Jak poprawnie zrealizować coś takiego?

Ten post edytował phpmack 13.11.2011, 10:24:38
Go to the top of the page
+Quote Post
skowron-line
post
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(phpmack @ 13.11.2011, 10:16:52 ) *
link a raczej linki tworze w pętli która ustawia mi odpowiednią nazwę linka i parametr dla akcji tyle tylko że po kliknięciu na ten link akcja wywoła się bez parametru a jego wartość pobieram dopiero we "wnętrzu" akcji za pomocą _getParam() w związku z tym dostaje warning że przy wywołaniu jest brak wymaganego parametru
A tak się w ogóle da zrobić (IMG:style_emoticons/default/questionmark.gif) Uruchomić akcję z parametrem (IMG:style_emoticons/default/questionmark.gif) Skoro dostajesz warninga to dlaczego po prostu nie zaczniesz odbierać parametru poprzez _getParam() tylko utrudniasz sobie życie.

Cytat(phpmack @ 13.11.2011, 10:16:52 ) *
Chciałbym osiągnąć coś takiego: Loguje się jako admin pobieram z DB tablicę użytkowników za pomocą foreach() wyświetlam listę tych użytkowników ale jako linki które uruchomią akcja pokazującą szczegóły użytkownika. Do akcji "pokaż użytkownika" muszę przekazać parametr np. id , nr tel czy cokolwiek alby zidentyfikować użytkownika do wyświetlenia. Jak poprawnie zrealizować coś takiego?

No właśnie tak jak to teraz robisz nie ma innego sposobu na osiągnięcie tego celu. Musisz podać parametr w urlu który później odbierzesz a akcji i przekażesz do modelu jako warunek do wyświetlenia określonej grupy elementów.
Go to the top of the page
+Quote Post
MitS
post
Post #9





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


w zendzie akcje nie przyjmują parametrów w funkcji.
Więc standardową operacją jest to co napisałeś -> getParam
Go to the top of the page
+Quote Post
phpmack
post
Post #10





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 11.06.2011

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


Cytat(MitS @ 13.11.2011, 12:08:39 ) *
w zendzie akcje nie przyjmują parametrów w funkcji.
Więc standardową operacją jest to co napisałeś -> getParam


czyli tak zdefiniowana akcja będzie poprawna?
  1. public function showuserAction() //brak parametru
  2. {
  3. $user_id = $this->_getParam('param2'); //pobieramy parametr z url
  4.  
  5. $tab_users = new Application_Model_DbTable_Users();
  6.  
  7. $user = $tab_users->getUser_by_userid($user_id);
  8.  
  9. $this->view->user = $user;
  10.  
  11. }


znalazłem jeszcze takie rozwiązanie które w zasadzie działa tak samo tzn parametry nadal lecą przez url: jednak działa to inaczej (IMG:style_emoticons/default/wink.gif)
  1. $this->getRequest()->isPost();
  2. $this->getRequest()->getPost('param');


a co gdybym jako parametr chciał przekazać jakiś duży obiekt lub tablicę? - posłużyć się referencją?

Ten post edytował phpmack 13.11.2011, 13:35:52
Go to the top of the page
+Quote Post
MitS
post
Post #11





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


Cytat
czyli tak zdefiniowana akcja będzie poprawna?


Tak, jak najbardziej.
Dodam iż $this->_getParam('param2'); jest równoznaczne z tym: $this->getRequest()->getParam('param2'); a zeby zobaczyc wszystkie przeslane parametry to jest metoda $this->getRequest()->getParams();
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: 14.09.2025 - 21:05