Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] problem z routingiem
blackroger
post 4.12.2009, 18:38:18
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

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


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/*

Ten post edytował blackroger 4.12.2009, 18:41:43
Go to the top of the page
+Quote Post
destroyerr
post 4.12.2009, 19:58:48
Post #2





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

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


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.

Ten post edytował destroyerr 4.12.2009, 19:59:51
Go to the top of the page
+Quote Post
blackroger
post 4.12.2009, 21:20:39
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

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


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?

Ten post edytował blackroger 4.12.2009, 21:22:00
Go to the top of the page
+Quote Post
destroyerr
post 4.12.2009, 21:55:23
Post #4





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

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


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
Go to the top of the page
+Quote Post
Gribo
post 4.12.2009, 23:20:08
Post #5





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

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


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


--------------------
Wyszukiwarka noclegów w Polsce i zagranicą.
Najlepszy katalog turystyczny wspomagający pozycjonowanie i promocje stron.
Go to the top of the page
+Quote Post
Crozin
post 4.12.2009, 23:35:12
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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+ }
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: 10.07.2025 - 08:37