Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]ZEND wyszukiwanie routing znak ?
Forum PHP.pl > Forum > Przedszkole
kielich
Witam,

mam problem ponieważ pisząc w zendzie mam porobione routingi i kiedy chcę wysłać formularz (wyszukiwanie) GETEM no to wszystko siada.

Link np. mam

www.xxx.pl/szukam/?poszukuje=asdasd

no a muszę mieć
www.xxx.pl/szukam/asdasd

jak mam to zrobić

Daimos
1) piszesz na złym forum
2) musisz zdefiniować taki routing, do tego nadaje się static, nie wiem z jakiej wersji korzystasz zenda, gdzie robisz routingi, polecam zapoznanie się z zend zend router w manualu
kielich
Tak wiem jak działa routing z zendzie i korzystam z v 1.9

ale nie wiem jak wykonać taki routing do wyszukiwarki mam taki kod

routing (index.php);

  1. ...
  2. ->addRoute('szukam', new Zend_Controller_Router_Route('szukam/:page', array('controller' => 'index', 'action' => 'szukam','page'=>'page')))
  3.  

formularz
  1. <form action="<?php echo $this->baseUrl;?>/szukam" method="get">
  2. <input type="text" name="szukam"/>
  3. <input type="submit" value="szukaj" />
  4. </form>


Niech Ktoś kto zna się na rzeczy napisze mi jakiś przykład aby wszystko fajnie chodziło ... bez te wyszukiwarki nie mogę ruszyć dalej ...
zend
Musisz przepisać adres na taki jaki chcesz w javascrip. No chyba że chodzi Ci o
  1. <form action="<?php echo $this -> url(array('controller' => 'ddsa') , 'myRouting' , true); ?>" method="get">


I pisz na forum do tego przeznaczonym, a nie w przeczkolu
kielich
Czy mógłbyś mi napisać jakiś przykład którego % zadziałania będzie > niż 50 % biggrin.gif kurcze siedzę od rana i kombinuje i nic ...
zend
Dołącz Jquery i w headzie kod poniżej, oczywiście po wcześniejszym dostosowaniu smile.gif pisane z palca, ale powinno działać, dorzuć jeszcze odpowiednie id do formularza
  1. $(document).ready(function(){
  2. $('#submitButtonId').click(function(){
  3. $('#formId').attr($('#formId').attr('action') + '/' + $('#szukajka').attr('value'));
  4. });
  5. });


  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
Daimos
Cytat(zend @ 3.06.2010, 18:56:23 ) *
Dołącz Jquery i w headzie kod poniżej, oczywiście po wcześniejszym dostosowaniu smile.gif pisane z palca, ale powinno działać
  1. $(document).ready(function(){
  2. $('#submitButtonId').click(function(){
  3. $('#formId').attr($('#formId').attr('action') + '/' + $('#szukajka').attr('value'));
  4. });
  5. });


[html]
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
[/htlm]

warto do tego jeszcze przeleciec wpisana fraze jakims wyrazeniem, zanim to wszystko wyslesz, bo wpisze ktos /, albo inny znak specjalny i bedzie... smile.gif
kielich
Kurde nie czaje tego kawałka ... możesz napisać do tego przykładowy formularz i sposób odebrania danych questionmark.gif

Będę niezmiernie wdzięczny
zend
Cytat
[...]no a muszę mieć
Wcale nie musisz mieć smile.gif

  1. <form action="<?php echo $this -> url(array( ) , 'szukam' , true); ?>" method="get">
  2. <input type="text" id="page" name="page" />


  1. //routing
  2. ->addRoute('szukam', new Zend_Controller_Router_Route('szukam', array('controller' => 'index', 'action' => 'szukam')));
  3.  
  4. //kontroler
  5. $this -> _getParam('page' , 'page');


Sorki że tak skaczę z pomysłu na pomysł, ale chcę Ci podać najprostszy dla Ciebie sposób
kielich
No ten przykład nie działa tak jak ma działać a link jest taki jak był
zend
  1. <!-- w sekcji head -->
  2. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  3.  
  4. <form id="searchForm" action="<?php echo rtrim($this-> url(array() , 'szukaj' , true));?>" method="get">
  5. <input id="searchField" type="text" name="szukam"/>
  6. <input id="submitButton" type="submit" value="szukaj" />
  7. </form>


[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. $('#ubmitButton').click(function(){
  3. $('#searchForm').attr('action' , $('#searchForm').attr('action') + '/' + $('#searchField').attr('value'));
  4. });
  5. });
  6.  
[JAVASCRIPT] pobierz, plaintext
kielich
Wywala mi błąd ze nie mam zdefiniowanego router "Szukaj" możesz jakoś mi to wytłumaczyć co i jak ...
vermis
Jak na mój gust to link
www.xxx.pl/szukam/?poszukuje=asdasd
powinien działać w standardowej konfiguracji, czyli kontroler 'szukam' akcja 'index'. Nie rozumiem po co do tego angażować javascript, czy ajax.
Jeśli masz jakiś routing dla 'szukam' to go wywal i powinno działać.
woj_tas
Cytat(kielich @ 3.06.2010, 14:26:32 ) *
Witam,

mam problem ponieważ pisząc w zendzie mam porobione routingi i kiedy chcę wysłać formularz (wyszukiwanie) GETEM no to wszystko siada.

Link np. mam

www.xxx.pl/szukam/?poszukuje=asdasd

no a muszę mieć
www.xxx.pl/szukam/asdasd

jak mam to zrobić


Nie pisze w zendzie, ale problem ten dotyczy raczej wszystkich struktur.

Wyslij formularz pod normalny adres z dodatkowym parametrem.
Kod
www.xxx.pl/szukam/?poszukuje=asdass&get=1



W akcji index sprawdz czy jest paramter get. jezeli tak to zrob redirecta pod adres jaki oczekujesz:
Kod
www.xxx.pl/szukam/asdass


Chyba ze w zendzie mozna rozpoznac urle bez dodatkowych parametrów.

kielich
ale ja musze miec url lub dostac się do danych ja wyzej pisałem ponieważ dalej mi to potrzebne do paginacji

OK zrobiłem tak
  1. ->addRoute('szukam', new Zend_Controller_Router_Route('szukam', array('controller' => 'index', 'action' => 'szukam')))


formularz normalny
dane odbieram sobie tak

  1. $szukane = Zend_Controller_Action::_getParam('szuka');

i działa ale link jest
www.xxx.pl/szukam?szuka=N&page=2

i to mi się nie podoba strasznie ponieważ w całym serwisie mam fajnie zdefiniowane linki i wszystko ładnie wygląda to i tutaj (wyszukiwarce) chciałbym mieć cos na wzór
www.xxx.pl/szukam/N/2
tylko nie wiem jak ten ROUTING zorganizować pomóżcie mi w tej sprawie ....
zend
  1. <head>
  2. <!-- w sekcji head -->
  3. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  4.  
  5. <script type="text/javascript">
  6. $(document).ready(function(){
  7. $('#submitButton').click(function(){
  8. //alert('clicked');
  9. //alert($('#searchForm').attr('action') + '/szukaj/' + $('#searchField').val());
  10. window.location = $('#searchForm').attr('action') + '/szukaj/' + $('#searchField').val();
  11. return false;
  12. });
  13. });
  14.  
  15.  
  16.  
  17. </head>
  18. <body>
  19. <!-- w sekcji head -->
  20. <form id="searchForm" action="<?php echo rtrim($this-> url(array() , 'szukaj' , true));?>" method="get">
  21. <input id="searchField" type="text" name="szukam"/>
  22. <input id="submitButton" type="submit" value="szukaj" />
  23. </form>
  24.  
  25. </body>
  26. </html>


Proszę, działający przykład, (testowane bez routingu)
zegarek84
z zenda nie korzystam chociaż tam do dokumentacji czasami zaglądam gdyż to zbiór dobrych klas... i jak luknąłem to podpinanie tutaj zmiennych wygląda jak bindowanie w PDO... zgodnie z dokumentacją zamiast
  1. ->addRoute('szukam', new Zend_Controller_Router_Route('szukam', array('controller' => 'index', 'action' => 'szukam')))
powinieneś mieć raczej coś w stylu:
  1. ->addRoute('szukam', new Zend_Controller_Router_Route('szukam/:szuka/:page', array('controller' => 'index', 'action' => 'szukam')))

poczytaj dokumentację i po testuj kilka wariantów...
w ostateczności jest jeszcze klasa Zend_Controller_Router_Route_Regex gdzie już jej zastosowanie wygląda jak użycie wyrażeń regularnych...
kielich
Kurde to nie dział ponieważ w URL mam

szukam/szukam/asd (zmieniłem na własne potrzeby szukaj na szukam w head i w formularzu)

pierwsze szukam to akcja a drugie to zmienna z formularza (chyba) i nie przenosi mnie do podstrony szukam ) ....
zend
Naprawde to taki problem żeby zauwarzyć że jest o jedno "szukaj" za dużo i usunąć z kodu?questionmark.gifquestionmark.gif Jeśli to naprawde taki problem to chyba porwałeś się na nie tego fw co trzeba, podstawy też musisz nadgonić
[JAVASCRIPT] pobierz, plaintext
  1. window.location = $('#searchForm').attr('action') + $('#searchField').val();
[JAVASCRIPT] pobierz, plaintext
kielich
OK dostosowałem to co mi napisałeś ZEND i smiga smile.gif kurcze thx ....powiedz mi prosze jeszcze jak odczytać cały aktualny URL


zmieniłem już to przed twoim postem i działało smile.gif czy mógłbyś mi jeszcze wytłumaczyć kod tego JS
zend
google => "jquery"+"tutorial"
google => "window.location"
kielich
OK dzięki już luknołem i wszystko się rozjaśniło smile.gif ale szukam również możliwość odczytani CAŁEGO adresu w zendzie i nie mogę znaleźć czy wiesz może jak to odczytać
zend
  1. echo '<pre>';
  2. print_r($_SERVER);
  3. echo '</pre>';

Znajdź sobie sam winksmiley.jpg I doucz się jeszcze trochę, bo brakuje Ci podstawowych informacji
kielich
Kurde staram się ograniczać tylko do ZEND'a i myślałem że ma on jakąś specjalną funkcje .....
zegarek84
Cytat(kielich @ 4.06.2010, 22:47:57 ) *
OK dzięki już luknołem i wszystko się rozjaśniło smile.gif ale szukam również możliwość odczytani CAŁEGO adresu w zendzie i nie mogę znaleźć czy wiesz może jak to odczytać
całego?? - ale jakiego typu - w pierwszym poście chciałeś tworzyć statyczne adresy bez parametru GET...
Cytat(kielich @ 4.06.2010, 22:55:17 ) *
Kurde staram się ograniczać tylko do ZEND'a i myślałem że ma on jakąś specjalną funkcje .....
na adresy tego typu jakie chciałeś uzyskać bez parametru get hasło .htaccess oraz moderewrite... lub w google na tą tematykę trafisz wpisując seo... za daleko szukasz - jeśli chcesz mieć statyczne adresy to przecież nie będziesz miał tysiąca katalogów czy plików na różne okazje - adresy tak zwane seo i tak trzeba przetłumaczyć do postaci z parametrami get na konkretne pliki - czyli w konkretnym pliku po przepisaniu/przetłumaczeniu adresów dla serwera zmienne masz w określonym gecie...
Cytat(kielich @ 4.06.2010, 00:37:56 ) *
www.xxx.pl/szukam/N/2


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.