- Добавлена поддержка URL fragments
- Добавлена поддержка значений массива в XML-маршрутах
Добавлена поддержка URL fragments
Идентификатор фрагмента является необязательная последняя часть URL, который начинается с символа # и используется для идентификации части документа. Этот URL элемент становится все более популярным, так как некоторые приложения используют его в качестве механизма навигации. По этой причине, Symfony 3.2 позволяет определить фрагмент при создании URL благодаря новому зарезервированному параметру маршрутизации под названием _fragment:
// generating a regular URL (/settings) $this->get('router')->generate('user_settings'); // generating a URL with a fragment (/settings#password) $this->get('router')->generate('user_settings', ['_fragment' => 'password']);
Этот параметр _fragment также может быть использован при определении маршрута в любом из форматов, поддерживаемых Symfony:
/** * @Route("/settings", defaults={"_fragment" = "password"}, name="user_settings") */ public function settingsAction() { ... }
Добавлена поддержка значений массива в XML-маршрутах
XML не является одним из наиболее популярных форматов для задания маршрутов в приложениях Symfony. В дополнение к этому, ему не хватает некоторых функций из других форматов, таких как, использование массивов для определения значений маршрутизации по умолчанию:
<routes> <route id="blog" path="/blog/{page}"> <default key="_controller">AppBundle:Blog:index</default> <!-- you can't define the type of the 'page' property and you can't use an array as the value of a '<default>' element --> <default key="page">1</default> </route> </routes>
В Symfony 3.2 мы решили улучшить класс YAmlFileLoader компонента маршрутизации, чтобы иметь возможность определить тип переменной любого <default>
элемента:
<routes> <route id="blog" path="/blog/{page}"> <default key="_controller"> <string>AppBundle:Blog:index</string> </default> <default key="page"> <int>1</int> </default> </route> </routes>
Теперь вы можете также использовать массивы в качестве значения любого элемента <default>
(используя <list> для скалярных массивов и <map> для ассоциативных массивов):
<routes> <route id="blog" path="/blog/{page}"> <default key="_controller"> <string>AppBundle:Blog:index</string> </default> <default key="page"> <int>1</int> </default> <default key="values"> <map> <bool key="public">true</bool> <int key="page">1</int> <float key="price">3.5</float> <string key="title">foo</string> </map> </default> </route> </routes>