2012-08-16 14 views
38

Symfony2'nin rotasında opsiyonel parametrelere sahip olabilir: Ben çalıştığını daha sonra site/user/1 yazarsanız ŞimdiNasıl aşağıda bu koduna sahip

/** 
* Lists all User entities. 
* 
* @Route("/{cid}",defaults={"cid" = null},name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{} 

ama site/user/ yazarsanız şöyle der:

No route found 

nasıl Her iki yolun da işe yarayabilir mi?

cevap

60

deneyin hiçbir ters eğik çizgi fark (site/user gitmek sonunda).

Genellikle işe yarayacak, nispeten benzer bir yapılandırma çalışmam var.

Ama başka hepiniz hep aynı eylem için yani

/** 
* Lists all User entities. 
* 
* @Route("/", name="user_no_cid") 
* @Route("/{cid}", name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{ 
33

kullanın yönlendirme yapılandırması için bir yml dosyası ve bunun gibi yönlendirme parametreleri kimliği için varsayılan bir değer ekleyin:

user: 
    pattern: /site/user/{id} 
    defaults: { _controller: YourBundle:Default:index, id: 1 } 

Bkz dokümantasyon here

+3

OP besbelli denetleyicisi – phpguru

+7

rota ek açıklamaları kullanıyor Oysa onun cevabı beni ve birkaç başka gelecek için – Andrew

+3

Bildirimi yardımcı: 'pattern' anahtar Symfony'de 3 –

5

Ayrıca GET parametresi ile yapabilirdi, örneğin birden fazla yol tanımlayabilir başarısız olursa

/** 
* @param Request $request 
* 
* @return Response 
*/ 
public function displayDetailAction(Request $request) 
{ 
    if ($courseId = $request->query->get('courseId')) { 
İlgili konular