如何从Symfony2请求对象中删除单个参数

cod*_*boy 6 symfony

我有以下请求对象,并希望在绑定到表单之前从控制器中删除'email_suffix'.这可能吗?

public 'request' => 
    object(Symfony\Component\HttpFoundation\ParameterBag)[8]
      protected 'parameters' => 
        array
          'registration' => 
            array
              'email' => string 's' (length=1)
              'email_suffix' => string 'y.com' (length=5)
              'password' => string '1234' (length=4)
              '_token' => string '967d99ba9f955aa67eb9eb004bd331151d816d06' (length=40)
          'product_id' => string '2' (length=1)
          'product_description' => string '12 month membership' (length=19)
          'product_price' => string '6.99' (length=4)
Run Code Online (Sandbox Code Playgroud)

我试过了 $request->request->remove("registration[email_suffix]");

我可以做$ request-> request-> remove("registration") - 这个有效.

现在,我这样做:

$requestReg = $request->request->get('registration');
$requestReg['email'] = $requestReg['email'].'@'.$requestReg['email_suffix'];
unset($requestReg['email_suffix']);
$request->request->set('registration',$requestReg);
Run Code Online (Sandbox Code Playgroud)

Far*_*ide 11

可以在symfony2中添加和删除请求对象中的参数.你必须查看ParameterBag Component,这就是所谓的方法remove($key),这就是你需要的.

因此,如果您从控制器对象调用它,您的请求的解决方案将是这样的:

$this->get('request')->query->remove('email_suffix');
Run Code Online (Sandbox Code Playgroud)


Vit*_*ian 1

我不确定您的电话是否$request->request有拼写错误。

$request->attributes您应该使用代表阶级的操作ParameterBag

如果您查看ParameterBag中的方法,您会发现无法取消设置数组内的变量。