27/01/2016 - SYMFONY
Eğer birden fazla controller veya method içinde @Route
annotation için requirements özelliğinde herhangi bir kural uyguluyorsanız, kuralın değişmesi durumunda ileride malum problemler yaşayabilirsiniz. Bu problemi aşağıdaki şekilde çözebilirsiniz.
Eğer ileride guid
regex değişikliği gerekirse ve de bu regexi birden fazla yerde kullansaydınız, başınız ağrırdı. Sebebide malum!
namespace Application\FrontendBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Response;
/**
* @Route("", service="application_frontend.controller.user")
*/
class UserController extends Controller
{
/**
* @param string $guid
*
* @Route("/user/{guid}", requirements={"guid"="([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}"})
* @Method({"GET"})
*
* @return Response
*/
public function getUserAction($guid)
{
// Do something with $guid
}
}
namespace Application\FrontendBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Response;
use Application\FrontendBundle\Validator\GuidAnnotation;
/**
* @Route("", service="application_frontend.controller.user")
*/
class UserController extends Controller
{
/**
* @param string $guid
*
* @Route("/user/{guid}", requirements={"guid"=GuidAnnotation::PATTERN})
* @Method({"GET"})
*
* @return Response
*/
public function getUserAction($guid)
{
// Do something with $guid
}
}
namespace Application\FrontendBundle\Validator;
class GuidAnnotation
{
const PATTERN = '([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}';
}