Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] problem z routingiem
Forum PHP.pl > Forum > PHP > Frameworki
blackroger
witam mam taki wpis w routingu....

editdeliverydetails:
url: /:module/:action-:bla
param: { module: auction, action: editdelivery }
requirements: { bla: \d+ }

taki w akcji:

  1. public function executeEditdelivery(sfWebRequest $request)
  2. {
  3. $usid = $this->getUser()->getAttribute('usid', null, 'user');//takes usid
  4.  
  5. $deliv_id = $this->request->getParameter('bla');
  6. print_r($deliv_id);
  7.  
  8. }//end executeEditdelivery
  9.  
  10.  
  11. //a taki w widoku:
  12. <ul class="auct_edit_menu_ul">
  13. <li><a title="Edit delivery details" href="<?php echo url_for('auction/editdelivery?bla=1') ?>">Edit</a></li>
  14. </ul>



Link jest konwertowany dobrze do postaci

http://192.168.1.221/auction/editdelivery-1

ale nie jest widoczny w kontrolerze w akcji....tak jakby go nie było....dziwnym jest fakt ze jak do bla przypisze stringa np. costam to wtedy go czyta. Co może być problemem? A właśnie jak użyję zmiennej aid to wszystko działa. Może jakiś konflikt wpisów. Poniżej przedstawię cały routing.yml.

category:
url: /category/:catname-:id
param: { module: main, action: category }
requirements: { id: \d+ }

auctiondetails:
url: /:module/:action-:type-:aid
param: { module: auction, action: details }
requirements: { aid: \d+, type: '(prepared|active|finished|cancelled)' }

editdetailsauction:
url: /:module/:action-:aid
param: { module: auction, action: editdetails }
requirements: { aid: \d+ }

deliverydetailsauction:
url: /:module/:action-:aid
param: { module: auction, action: deliverydetails }
requirements: { aid: \d+ }

editdeliverydetails:
url: /:module/:action-:bla
param: { module: auction, action: editdelivery }
requirements: { bla: \d+ }

# default rules
homepage:
url: /
param: { module: main, action: index }

default_index:
url: /:module
param: { action: index }

default:
url: /:module/:action/*
destroyerr
Twój routing jest do niczego.
Jaka jest różnica pomiędzy tą trasą:
Kod
/:module/:action-:bla

a tą
Kod
/:module/:action-:aid

Dla parsowania url'a niczym się nie różnią w związku z tym dopasowany zostanie ten pierwszy. Jest to opisane w dokumentacji, więc po przeczytaniu powinieneś nie mieć z tym problemów.
blackroger
Myślałem, że każda akcja może mieć swój routing....przepraszam ale za bardzo nie rozumiem....
dla jednej akcji mam:
url: /:module/:action-:aid

z parametrem aid
akacja action: editdetails

a dla drugiej:

/:module/:action-:bla

z parametrem bla...
action: editdelivery

co jest w tym źle?
destroyerr
Przeszukałeś forum i przeczytałeś dokumentację? Nic Ci to nie dało? To sobie to odpuść. Chcesz, to mogę Ci od razu wszystko napisać, dla mnie lepiej, mniejsza (lub głupsza) konkurencja.
Symfony z każdej ścieżki tworzy wyrażenie regularne, do którego później jest dopasowany url. Jaka jest różnica dla tych wyrażeń regularnych jeśli mamy takie adresy:
Kod
/jakis-tam-modul/jakas_akcja-15
/jakis-tam-modul/jakas_akcja-7
/inny-modul/jakas_akcja-15
/inny-modul/inna_akcja-7

Żadna, przecież każdy z nich pasuje do Twojej regułki
Gribo
Dobrym nawykiem też jest ożywanie nazwy ścieżki zamiast samej ścieżki :

z
  1. <?php [url="http://www.php.net/echo"]echo[/url] url_for('auction/editdelivery?bla=1') ?>


na
  1. <?php [url="http://www.php.net/echo"]echo[/url] url_for('@editdeliverydetails?bla=1') ?>

poczytaj o tym w dokumentacji
Crozin
Po co w ogóle definiujesz we wzorcu :module, :action skoro na sztywno je podajesz w paramters?

Kod
editde...:
  url: /auction/edit-dev...-:id
  params: { module: auction, action: edit )
  requirements: { id: \d+ }
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.