The FrameworkBundle is the piece that glues all the different Symfony components to create a robust and flexible framework. In Symfony 3.1 we introduced some minor but useful improvements to it.

Deprecated built-in form types as services

Jules Pietri
Contributed by Jules Pietri in #18356

If you execute debug:container command to debug the services defined in the container of your application, you'll find 29 services related to the built-in form types:

1
2
3
4
5
6
7
$ ./bin/console debug:container
...
form.type.birthday   Symfony\Component\Form\Extension\Core\Type\BirthdayType
form.type.button     Symfony\Component\Form\Extension\Core\Type\ButtonType
...
form.type.timezone   Symfony\Component\Form\Extension\Core\Type\TimezoneType
form.type.url        Symfony\Component\Form\Extension\Core\Type\UrlType

In Symfony 3.1 we've deprecated all these services and they'll be removed in Symfony 4.0. Instead of using these services, you must use the fully qualified class name of the form types (e.g. UrlType::class).

Improved debug:container and debug:config commands

Stepan Anchugov Oleg Voronkovich
Contributed by Stepan Anchugov and Oleg Voronkovich in #17484 and #17726

In Symfony 3.1, these commands have been improved to help you when no results are found. First, debug:config command now displays a Did you mean? list of suggestions when the bundle name or extension alias is not found.

The debug:container command already displayed the Did you mean? list of suggestions, but now, when there is only one suggestion, it displays it preselected.

Added json() shortcut to the base controller

Fred Cox
Contributed by Fred Cox in #17642

The base controller defines shortcut methods for common tasks, such as render() to render templates and get() to get container services. In Symfony 3.1 we added a new shortcut called json() to turn contents into JSON responses:

1
2
3
4
5
6
7
8
9
10
11
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class ApiController extends Controller
{
    public function indexAction()
    {
        // ...

        return $this->json($data);
    }
}

If the serializer service is available, data is serialized with it using the default encoding options. If not, the regular json_encode() call is applied to data.

This shortcut defines three more optional arguments, where the $context is the information passed to the serialize() method (when using the serializer):

1
return $this->json($data, $status = 200, $headers = array(), $context = array());
Published in #Living on the edge