Learn how to easily remove this deprecation notice from your Symfony 5 profiler.

How to remove deprecation notice: Since symfony/http-foundation 5.1 Retrieving a non-string value from "InputBag::get()" is deprecated, and will throw a "BadRequestException" exception in Symfony 6.0

Working on a new project as I always do with Symfony, a constant deprecation notice showed up when working with forms:

User Deprecated: Since symfony/http-foundation 5.1: Retrieving a non-string value from "Symfony\Component\HttpFoundation\InputBag::get()" is deprecated, and will throw a "Symfony\Component\HttpFoundation\Exception\BadRequestException" exception in Symfony 6.0, use "Symfony\Component\HttpFoundation\InputBag::all($key)" instead.

This deprecation notice can be easily removed from your code and it will be explained in this article.

How to trigger this deprecation notice

Consider the following example that uses a basic GET form without a FormType in order to explain you easily. The form looks like this:

<form action="http://sandbox/index" method="get">
        Option 1
        <input type="checkbox" name="my_form[options][]" value="1">
        Option 2
        <input type="checkbox" name="my_form[options][]" value="2">

And when it's submitted, the following index action in the controller will handle the request:


namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
class PagesController extends AbstractController
    public function index(Request $request): Response
        // 1. Use the get method to retrieve a non-string parameter, for example the 
        // As a GET form, the URL may look like:
        //  http://sandbox/index?my_form%5Boptions%5D%5B%5D=1&my_form%5Boptions%5D%5B%5D=2
        $data = $request->query->get("my_form");
        // data will contain an array indeed:
        // [
        //     "options" => [1, 2]
        // ]

        // The previous code will trigger the deprecation notice although it works
        return $this->render('pages/index.html.twig', [

The solution to this issue is quite easy though.


The deprecation itself is not caused because you use the $request->query->get or $request->request->get methods, but to use them to retrieve values that are interpreted as arrays. For example, if someone opens the following URL of your project (http://sandbox/page?age=23) and you try to obtain the age parameter with the mentioned methods like this:

// 23
echo $request->query->get("age");

That won't throw the exception! Because the parameter itself is a string or number. However, if the request contains the array format (http://sandbox/page?my_form%5Boptions%5D%5B%5D=1&my_form%5Boptions%5D%5B%5D=2), to prevent the deprecation notice from appearing, you will need to obtain the value, in this case, my_form using the all method and providing the key as first argument: 


// data will contain an array indeed without the deprecation notice:
// [
//     "options" => [1, 2]
// ]

If the given key doesn't exist, the method will return an empty array.

Happy coding ❤️!

Become a more social person