Php Symfony 2.0路由通配符是否已消毒?

Php Symfony 2.0路由通配符是否已消毒?,php,symfony,Php,Symfony,…还是我必须按以下方式对其进行消毒 class RelationshipController extends Controller { ... public function deleteAction($objectId) { $objectId = filter_var($objectId, FILTER_SANITIZE_NUMBER_INT) ... 默认情况下,Symfony路由器通过以下正则表达式匹配路由参数:[^/]+。所以

…还是我必须按以下方式对其进行消毒

class RelationshipController extends Controller
{
    ...

    public function deleteAction($objectId)
    {
        $objectId = filter_var($objectId, FILTER_SANITIZE_NUMBER_INT)
        ...

默认情况下,Symfony路由器通过以下正则表达式匹配路由参数:
[^/]+
。所以除了
/
之外的任何东西都是允许的

如果要确保
$objectId
是一个整数,应定义如下路由:

my_route:
    path: /my/route/{objectId}
    defaults: { _controller: MyBundle:Controller:myAction }
    requirements:
        objectId: \d+
这样,您的
$objectId
将始终是整数的字符串表示形式,因为如果Symfony与route不匹配,它将不匹配route

因此,这将与您的控制器匹配:

GET /my/route/234
这将抛出未找到的404:

GET /my/route/asd

默认情况下,Symfony路由器通过以下正则表达式匹配路由参数:
[^/]+
。所以除了
/
之外的任何东西都是允许的

如果要确保
$objectId
是一个整数,应定义如下路由:

my_route:
    path: /my/route/{objectId}
    defaults: { _controller: MyBundle:Controller:myAction }
    requirements:
        objectId: \d+
这样,您的
$objectId
将始终是整数的字符串表示形式,因为如果Symfony与route不匹配,它将不匹配route

因此,这将与您的控制器匹配:

GET /my/route/234
这将抛出未找到的404:

GET /my/route/asd
路由点过滤器(您在YAML配置中定义-特别是
[0-9]
)是为了避免自己进行过滤。所以这取决于,如果你要求路由器只匹配数字,你不必这样做。否则它将作为一个字符串进行匹配,因此需要手动执行该操作。路由点过滤器(您在YAML配置中定义的-具体地说是
[0-9]
)是为了避免自己进行过滤。所以这取决于,如果你要求路由器只匹配数字,你不必这样做。否则它将作为字符串进行匹配,因此需要手动进行匹配