...或者我必须如下消毒它们吗?
class RelationshipController extends Controller
{
...
public function deleteAction($objectId)
{
$objectId = filter_var($objectId, FILTER_SANITIZE_NUMBER_INT)
...
Run Code Online (Sandbox Code Playgroud)
默认情况下,Symfony Router通过以下正则表达式匹配路由参数:[^/]+.所以除了/允许之外的任何事
如果你想确保$objectId是一个整数,你应该定义一个这样的路由:
my_route:
path: /my/route/{objectId}
defaults: { _controller: MyBundle:Controller:myAction }
requirements:
objectId: \d+
Run Code Online (Sandbox Code Playgroud)
这样,您$objectId将始终是整数的字符串表示形式,因为如果不是,Symfony将不匹配路由.
所以这将匹配您的控制器:
GET /my/route/234
Run Code Online (Sandbox Code Playgroud)
这将抛出404未找到:
GET /my/route/asd
Run Code Online (Sandbox Code Playgroud)