2012-05-03 12 views

cevap

12

Gereksinim duyduğunuz yer tutucuları mı kastediyorsunuz?

blog: 
    pattern: /blog/{page} 
    defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } 
    requirements: 
     page: \d+ 

Burada, bir yer tutucu tarafından tanımlanan ve aynı denetleyici eylemine giden normal ifadeler tarafından doğrulanan birden çok rota vardır.

Düzenleme:

url her bölümü bir yer tutucu olabilir.

blog: 
    pattern: /{type}/{page} 
    defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } 
    requirements: 
     type: blog|articles 
     page: \d+ 
+0

@svassr cevap – ilanco

+0

güncellenen ne omittable türü var isterseniz? Örneğin:/posts/sport/2', "posts/sport", "posts/2" için bir yolu nasıl tanımlarsınız. Bu yüzden genel rota: '/ posts/{category}/{page}', ancak - belli ki - sadece varsayılan değerlerle çalışmaz. Symfony'a ikinci paramın string/int olup olmadığını nasıl anlayacağını söylemenin bir yolu var mı? –

24

Ek açıklamaları kullanırken birden fazla rota tanımlayabilirsiniz. Bunun gibi:

/** 
* @Route ("item1") 
* @Route ("item/2") 
* @Method("GET") 
*/ 
public function itemAction() { 

} 

Ben parametrelerle rotalar için 2.0.9

+2

Bu gerçekten ilginç, ben bir _Action_ hemen önce tanımlanmış ilgili rutinleri sahip olma fikrini seviyorum, ama ben tüm kontrolörlerimde benim yönlendirme kurallarını yaymak yerine her şeyi bir _routing.yml_ içinde tutmayı tercih ediyorum – svassr

+5

Muhtemelen app/konsolu açın, yönlendiriciyi unutma: tüm rotalarınızı görmek için hata ayıklama komutu. Ek açıklamaları kullanırsanız, varsayılan olarak rotalarınız için anlamlı isimler alırsınız, bu nedenle denetleyiciyi bulmak oldukça kolaydır. – cvaldemar

+1

Birden çok demet kullandığınızda tüm rotaları tek bir dosyada tutmak mümkün değildir (ana uygulama 'routing.yml 'kaynağında rota olarak eklediğinizde), bu gerçekten yönlendirme için bir argüman değildir. Ek açıklamaların kullanımı kolaydır, kolay hata ayıklanabilir ('yönlendirici: hata ayıklama ') ve yapılandırılabilir (örneğin kendi adınızı şu şekilde ayarlayabilirsiniz:' @Route ("/", name = "homepage") '). – Wirone

4

Açıklamalar örnek Versiyon kullanıyorum:

{{ path('shops_town') }} 
:

/** 
* @Route("/shops/{page}", name="shops") 
* @Route("/shops/town/{town}/{page}", name="shops_town") 
* @Route("/shops/department/{department}/{page}", name="shops_department") 
*/ 
public function shopsAction(Town $town = null, Department $department = null, $page = 1) 
{ ... } 

Sonra böyle dal rotayı oluşturmak

veya

{{ path('shops_town', {'town': town.id}) }} 

veya

{{ path('shops_department', {'department': department.id}) }} 
İlgili konular