【发布时间】:2016-01-27 15:59:56
【问题描述】:
如下所示,我的@Route->requirements 正则表达式(我在许多其他控制器/方法中使用它)有点长,看起来不太好,最重要的是 将来在语法更新的情况下可能很难维护所以问题是,我们可以做下面这样的事情吗?
我已经看到很多类似的问题和教程来创建自定义注释,但不是这样的问题。
当前
/**
* @param string $id
*
* @Method({"GET"})
* @Route("/class/{id}", requirements={"id"="([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}"})
* @Secure(roles="ROLE_ADMIN")
*
* @return Response
*/
public function getClassAction($id)
可能是这样的
/**
* @param string $id
*
* @Method({"GET"})
* @Route("/class/{id}", requirements={"id"="MyClass::MyValidation"})
* @Secure(roles="ROLE_ADMIN")
*
* @return Response
*/
public function getClassAction($id)
我的班级
MyClass
{
// Would be ideal to stick this into parameters.yml though
const ID = "([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}";
public function MyValidation($value)
{
if (!preg_match(self::ID, $value)) {
return 'Bad ID';
}
return true;
}
}
【问题讨论】:
标签: symfony