2016-03-20 32 views
0

İlk adımları Symfony ile yapıyorum. Ben 2 özdeş fonksiyonları ile bir dosya DefaultController.php vardır:Symfony 3 magic

/** 
    * @Route("/test/", name="test") 
    */ 
    public function indexActionTest(Request $request) 
    { 
     return new Response('<html><body>Lucky number: it works!</body></html>'); 
    } 

    /** 
    * @Route("/test2/", name="test2") 
    */ 
    public function indexActionTest2(Request $request) 
    { 
     return new Response('<html><body>Lucky number: it works here as well!</body></html>'); 
    } 

eğlenceli bir şey ikincisi http://triod.ru/project/web/test/ http://triod.ru/project/web/test2/ değil iken ilki konsolu söylüyor olsa da, işe yaraması Rota eşleşiyor! Bu nasıl mümkün olabilir? Eğer başka bir yol geçersiz sürece adı eklemek gerek yok Ayrıca

public function test2Action(Request $request) 

:

+0

"indexActionTest2" den önce boş satırı kaldırmaya çalışın, bu nedenle doküman bloğu doğrudan yöntemden önce gelir. –

+0

Ne yazık ki yardımcı olmuyor (: –

+0

Eh, bir test yaptım ve iyi çalışıyor. Başka bir şey olmalı. Bu yöntemler aynı denetleyicide mi? Bu yollar için yönlendirme confriguratino nedir? –

cevap

0

Herkese açık denetleyici yöntemleri her zaman test2 Yani

[method]Action(Request $request){} 

hoşuna isimlendirmeliyim Eylem bitmeli:

/** 
    * @Route("/test/") 
    */ 
    public function testAction(Request $request) 
    { 
     return new Response('<html><body>Lucky number: it works!</body></html>'); 
    } 


    /** 
    * @Route("/test2/") 
    */ 

    public function test2Action(Request $request) 
    { 
     return new Response('<html><body>Lucky number: it works here as well!</body></html>'); 
    } 
+1

Hiç doğru değil ;-) Ad vermek zorunda değilsiniz. bu şekilde, ek açıklamaları kullandığınızda. Bunu test projemde çok memnun ettim. Ayrıca, Twig'de 'yol' ('test') 'yapmak istiyorsanız, denetleyicide yeniden yönlendirmek ve benzeri işlemler eklemek de yararlıdır. Route'un adı, birçok durumda kullanılabilecek bir işleyicidir. –

+0

Yapmam gerektiğini söylemedim, dedim ki, en iyi uygulama kastettiğim şeydi. Ve eğer YML yönlendirmesini kullanırsanız, symfony, [senaryo adı] Eylemi adlı bir denetleyici işlevini arar, eğer bu senaryoda ActionTest olsaydı işe yaramazdı. Ayrıca test yolu için, daha uygun olabilir ama yine de bir gereklilik değil, otomatik olarak oluşturulmuş bir yol com_bundle_controller_action olsun. – jfxninja

+0

"If", ancak yml yönlendirme kullanmıyor ;-) Her neyse, bu uygulamaların burada sorunla alakası yok. Yani, senin ofisin sorunla hiç ilgili değil. –