Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 390 lines (290 sloc) 11.048 kB
8b55541 @fabpot added an UPGRADE file
fabpot authored
1 UPGRADE FROM 2.0 to 2.1
2 =======================
3
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
4 ### General
5
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
6 * The merging strategy for `assets_base_urls` and `base_urls` has changed.
8b55541 @fabpot added an UPGRADE file
fabpot authored
7
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
8 Unlike most configuration blocks, successive values for `assets_base_urls`
9 will overwrite each other instead of being merged. This behavior was chosen
10 because developers will typically define base URL's for each environment.
11 Given that most projects tend to inherit configurations (e.g.
12 `config_test.yml` imports `config_dev.yml`) and/or share a common base
13 configuration (i.e. `config.yml`), merging could yield a set of base URL's
14 for multiple environments.
8b55541 @fabpot added an UPGRADE file
fabpot authored
15
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
16 ### HttpFoundation
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
17
b36f2c8 @johnnypeck "Locate" should be "Locale"
johnnypeck authored
18 * Locale management was moved from the Session class to the Request class.
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
19
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
20 ##### Configuring the default locale
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
21
bf5ccb0 @Tobion resolved conflict
Tobion authored
22 Before:
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
23
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
24 ```
25 framework:
26 session:
27 default_locale: fr
28 ```
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
29
bf5ccb0 @Tobion resolved conflict
Tobion authored
30 After:
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
31
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
32 ```
33 framework:
34 default_locale: fr
35 ```
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
36
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
37 ##### Retrieving the locale from a Twig template
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
38
398acc9 [HttpFoundation] Reworked flashes to maintain same behaviour as in Sy…
Drak authored
39 Before: `{{ app.request.session.locale }}` or `{{ app.session.locale }}`
f9951a3 Fixed formatting.
Drak authored
40
bf5ccb0 @Tobion resolved conflict
Tobion authored
41 After: `{{ app.request.locale }}`
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
42
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
43 ##### Retrieving the locale from a PHP template
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
44
398acc9 [HttpFoundation] Reworked flashes to maintain same behaviour as in Sy…
Drak authored
45 Before: `$view['session']->getLocale()`
f9951a3 Fixed formatting.
Drak authored
46
bf5ccb0 @Tobion resolved conflict
Tobion authored
47 After: `$view['request']->getLocale()`
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
48
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
49 ##### Retrieving the locale from PHP code
74bc699 @fabpot moved management of the locale from the Session class to the Request …
fabpot authored
50
398acc9 [HttpFoundation] Reworked flashes to maintain same behaviour as in Sy…
Drak authored
51 Before: `$session->getLocale()`
f9951a3 Fixed formatting.
Drak authored
52
bf5ccb0 @Tobion resolved conflict
Tobion authored
53 After: `$request->getLocale()`
2a74ac3 @canni Add info about BC Break to CHANGELOG-2.1 and UPGRADE-2.1
canni authored
54
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
55 ### Security
2a74ac3 @canni Add info about BC Break to CHANGELOG-2.1 and UPGRADE-2.1
canni authored
56
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
57 * `Symfony\Component\Security\Core\User\UserInterface::equals()` has moved to
58 `Symfony\Component\Security\Core\User\EquatableInterface::isEqualTo()`.
59
60 You must rename the `equals()` method in your implementation of the `User`
61 class to `isEqualTo()` and implement `EquatableInterface`. Apart from that,
62 no other changes are required.
63
64 Alternatively, you may use the default implementation provided by
65 `AbstractToken::hasUserChanged()` if you have no need of custom comparison
66 logic. In this case, do not implement `EquatableInterface` and remove your
67 comparison method.
bf5ccb0 @Tobion resolved conflict
Tobion authored
68
69 Before:
70
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
71 ```
72 class User implements UserInterface
73 {
74 // ...
75 public function equals(UserInterface $user) { /* ... */ }
76 // ...
77 }
78 ```
bf5ccb0 @Tobion resolved conflict
Tobion authored
79
80 After:
81
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
82 ```
83 class User implements UserInterface, EquatableInterface
84 {
85 // ...
86 public function isEqualTo(UserInterface $user) { /* ... */ }
87 // ...
88 }
89 ```
90
91 ### Form and Validator
bf5ccb0 @Tobion resolved conflict
Tobion authored
92
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
93 * Child forms are no longer automatically validated. That means that you must
94 explicitly set the `Valid` constraint in your model if you want to validate
95 associated objects.
bf5ccb0 @Tobion resolved conflict
Tobion authored
96
282d3ae @fabpot updated CHANGELOG for 2.1
fabpot authored
97 If you don't want to set the `Valid` constraint, or if there is no reference
98 from the data of the parent form to the data of the child form, you can
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
99 enable BC behavior by setting the `cascade_validation` form option to `true`
100 on the parent form.
87b16e7 @webmozart [Form] Greatly improved ChoiceListInterface and all of its implementa…
webmozart authored
101
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
102 * Changed implementation of choice lists
d346ae6 @webmozart Improved choice list sections of UPGRADE and CHANGELOG
webmozart authored
103
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
104 ArrayChoiceList was replaced. If you have custom classes that extend this
105 class, you must now extend SimpleChoiceList.
7899bea @webmozart Added examples to UPGRADE
webmozart authored
106
107 Before:
108
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
109 ```
110 class MyChoiceList extends ArrayChoiceList
111 {
112 protected function load()
7899bea @webmozart Added examples to UPGRADE
webmozart authored
113 {
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
114 parent::load();
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
115
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
116 // load choices
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
117
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
118 $this->choices = $choices;
7899bea @webmozart Added examples to UPGRADE
webmozart authored
119 }
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
120 }
121 ```
7899bea @webmozart Added examples to UPGRADE
webmozart authored
122
123 After:
124
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
125 ```
126 class MyChoiceList extends SimpleChoiceList
127 {
128 public function __construct()
7899bea @webmozart Added examples to UPGRADE
webmozart authored
129 {
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
130 // load choices
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
131
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
132 parent::__construct($choices);
7899bea @webmozart Added examples to UPGRADE
webmozart authored
133 }
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
134 }
135 ```
7899bea @webmozart Added examples to UPGRADE
webmozart authored
136
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
137 If you need to load the choices lazily -- that is, as soon as they are
138 accessed for the first time -- you can extend LazyChoiceList instead.
7899bea @webmozart Added examples to UPGRADE
webmozart authored
139
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
140 ```
141 class MyChoiceList extends LazyChoiceList
142 {
143 protected function loadChoiceList()
7899bea @webmozart Added examples to UPGRADE
webmozart authored
144 {
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
145 // load choices
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
146
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
147 return new SimpleChoiceList($choices);
7899bea @webmozart Added examples to UPGRADE
webmozart authored
148 }
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
149 }
150 ```
d346ae6 @webmozart Improved choice list sections of UPGRADE and CHANGELOG
webmozart authored
151
152 PaddedChoiceList, MonthChoiceList and TimezoneChoiceList were removed.
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
153 Their functionality was merged into DateType, TimeType and TimezoneType.
d346ae6 @webmozart Improved choice list sections of UPGRADE and CHANGELOG
webmozart authored
154
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
155 EntityChoiceList was adapted. The methods `getEntities()`,
156 `getEntitiesByKeys()`, `getIdentifier()` and `getIdentifierValues()` were
157 removed or made private. Instead of the first two, you can now use
158 `getChoices()` and `getChoicesByValues()`. For the latter two, no
d346ae6 @webmozart Improved choice list sections of UPGRADE and CHANGELOG
webmozart authored
159 replacement exists.
160
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
161 * The strategy for generating the `id` and `name` HTML attributes for choices
162 in a choice field has changed.
f9951a3 Fixed formatting.
Drak authored
163
d72900e @webmozart [Form] Incorporated changes suggested in PR comments
webmozart authored
164 Instead of appending the choice value, a generated integer is now appended
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
165 by default. Take care if your JavaScript relies on the old behavior. If you
166 can guarantee that your choice values only contain ASCII letters, digits,
167 colons and underscores, you can restore the old behavior by setting the
168 `index_strategy` choice field option to `ChoiceList::COPY_CHOICE`.
169
170 * The strategy for generating the `value` HTML attribute for choices in a
171 choice field has changed.
172
173 Instead of using the choice value, a generated integer is now stored. Again,
174 take care if your JavaScript reads this value. If your choice field is a
175 non-expanded single-choice field, or if the choices are guaranteed not to
176 contain the empty string '' (which is the case when you added it manually
5f6f75c @webmozart [Form] Fixed outstanding issues mentioned in the PR
webmozart authored
177 or when the field is a single-choice field and is not required), you can
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
178 restore the old behavior by setting the `value_strategy` choice field option
179 to `ChoiceList::COPY_CHOICE`.
7c70976 @webmozart [Form] Fixed text in UPGRADE file
webmozart authored
180
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
181 * In the choice field type's template, the structure of the `choices` variable
182 has changed.
7c70976 @webmozart [Form] Fixed text in UPGRADE file
webmozart authored
183
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
184 The `choices` variable now contains ChoiceView objects with two getters,
185 `getValue()` and `getLabel()`, to access the choice data. The indices of the
186 array are controlled by the choice field's `index_generation` option.
7c70976 @webmozart [Form] Fixed text in UPGRADE file
webmozart authored
187
188 Before:
189
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
190 ```
191 {% for choice, label in choices %}
192 <option value="{{ choice }}"{% if _form_is_choice_selected(form, choice) %} selected="selected"{% endif %}>
193 {{ label }}
194 </option>
195 {% endfor %}
196 ```
7c70976 @webmozart [Form] Fixed text in UPGRADE file
webmozart authored
197
198 After:
199
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
200 ```
201 {% for choice in choices %}
202 <option value="{{ choice.value }}"{% if _form_is_choice_selected(form, choice) %} selected="selected"{% endif %}>
203 {{ choice.label }}
204 </option>
205 {% endfor %}
206 ```
600cec7 @webmozart [Form] Added missing entries to CHANGELOG and UPGRADE
webmozart authored
207
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
208 * In the collection type's template, the default name of the prototype field
209 has changed from `$$name$$` to `__name__`.
600cec7 @webmozart [Form] Added missing entries to CHANGELOG and UPGRADE
webmozart authored
210
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
211 For custom names, dollar signs are no longer prepended and appended. You are
212 advised to prepend and append two underscores wherever you specify a value
213 for the field's `prototype_name` option.
600cec7 @webmozart [Form] Added missing entries to CHANGELOG and UPGRADE
webmozart authored
214
215 Before:
216
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
217 ```
218 $builder->add('tags', 'collection', array('prototype' => 'proto'));
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
219
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
220 // results in the name "$$proto$$" in the template
221 ```
600cec7 @webmozart [Form] Added missing entries to CHANGELOG and UPGRADE
webmozart authored
222
223 After:
224
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
225 ```
226 $builder->add('tags', 'collection', array('prototype' => '__proto__'));
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
227
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
228 // results in the name "__proto__" in the template
229 ```
9153f0e @webmozart [Validator] Deprecated ConstraintValidator methods setMessage(), getM…
webmozart authored
230
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
231 * The methods `setMessage()`, `getMessageTemplate()` and
232 `getMessageParameters()` in the Constraint class were deprecated.
9153f0e @webmozart [Validator] Deprecated ConstraintValidator methods setMessage(), getM…
webmozart authored
233
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
234 If you have implemented custom validators, you should use the
235 `addViolation()` method on the `ExecutionContext` object instead.
9153f0e @webmozart [Validator] Deprecated ConstraintValidator methods setMessage(), getM…
webmozart authored
236
237 Before:
238
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
239 ```
240 public function isValid($value, Constraint $constraint)
241 {
242 // ...
243 if (!$valid) {
244 $this->setMessage($constraint->message, array(
245 '{{ value }}' => $value,
246 ));
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
247
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
248 return false;
9153f0e @webmozart [Validator] Deprecated ConstraintValidator methods setMessage(), getM…
webmozart authored
249 }
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
250 }
251 ```
9153f0e @webmozart [Validator] Deprecated ConstraintValidator methods setMessage(), getM…
webmozart authored
252
253 After:
254
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
255 ```
256 public function isValid($value, Constraint $constraint)
257 {
258 // ...
259 if (!$valid) {
260 $this->context->addViolation($constraint->message, array(
261 '{{ value }}' => $value,
262 ));
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
263
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
264 return false;
8245bf1 @fabpot merged branch bschussek/issue2615 (PR #3228)
fabpot authored
265 }
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
266 }
267 ```
88ef52d @webmozart [Form] Improved FormType::getDefaultOptions() to see default options …
webmozart authored
268
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
269 * The options passed to the `getParent()` method of form types no longer
270 contain default options.
282d3ae @fabpot updated CHANGELOG for 2.1
fabpot authored
271
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
272 You should check if options exist before attempting to read their value.
282d3ae @fabpot updated CHANGELOG for 2.1
fabpot authored
273
274 Before:
275
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
276 ```
277 public function getParent(array $options)
278 {
279 return 'single_text' === $options['widget'] ? 'text' : 'choice';
280 }
281 ```
282d3ae @fabpot updated CHANGELOG for 2.1
fabpot authored
282
283 After:
284
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
285 ```
286 public function getParent(array $options)
287 {
288 return isset($options['widget']) && 'single_text' === $options['widget'] ? 'text' : 'choice';
289 }
290 ```
88ef52d @webmozart [Form] Improved FormType::getDefaultOptions() to see default options …
webmozart authored
291
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
292 * The `add()`, `remove()`, `setParent()`, `bind()` and `setData()` methods in
293 the Form class now throw an exception if the form is already bound.
88ef52d @webmozart [Form] Improved FormType::getDefaultOptions() to see default options …
webmozart authored
294
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
295 If you used these methods on bound forms, you should consider moving your
296 logic to an event listener that observes one of the following events:
297 `FormEvents::PRE_BIND`, `FormEvents::BIND_CLIENT_DATA` or
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
298 `FormEvents::BIND_NORM_DATA`.
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
299
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
300 ### Session
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
301
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
302 * Flash messages now return an array based on their type. The old method is
303 still available but is now deprecated.
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
304
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
305 ##### Retrieving the flash messages from a Twig template
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
306
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
307 Before:
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
308
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
309 ```
5041f85 @fabpot tweaked UPGRADE file
fabpot authored
310 {% if app.session.hasFlash('notice') %}
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
311 <div class="flash-notice">
5041f85 @fabpot tweaked UPGRADE file
fabpot authored
312 {{ app.session.getFlash('notice') }}
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
313 </div>
314 {% endif %}
315 ```
316 After:
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
317
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
318 ```
5ae76f1 [HttpFoundation] Update documentation.
Drak authored
319 {% for flashMessage in app.session.flashbag.get('notice') %}
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
320 <div class="flash-notice">
5ae76f1 [HttpFoundation] Update documentation.
Drak authored
321 {{ flashMessage }}
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
322 </div>
5ae76f1 [HttpFoundation] Update documentation.
Drak authored
323 {% endfor %}
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
324 ```
325
5041f85 @fabpot tweaked UPGRADE file
fabpot authored
326 You can process all flash messages in a single loop with:
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
327
328 ```
5ae76f1 [HttpFoundation] Update documentation.
Drak authored
329 {% for type, flashMessages in app.session.flashbag.all() %}
72bf93f @lsmith77 typo fix in upgrading guide
lsmith77 authored
330 {% for flashMessage in flashMessages %}
5ae76f1 [HttpFoundation] Update documentation.
Drak authored
331 <div class="flash-{{ type }}">
332 {{ flashMessage }}
333 </div>
334 {% endfor %}
8e90903 @pcampr fixed small typo in UPGRADE-2.1.md
pcampr authored
335 {% endfor %}
cfddbba @jmikola Grammar and formatting in upgrade doc
jmikola authored
336 ```
337
68074a2 Changelog and upgrading changes.
Drak authored
338 * Session handler drivers should implement `\SessionHandlerInterface` or extend from
887d70f @drmonty fixed small typo in UPGRADE-2.1.md
drmonty authored
339 `Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeHandlerInterface` base class and renamed
68074a2 Changelog and upgrading changes.
Drak authored
340 to `Handler\FooSessionHandler`. E.g. `PdoSessionStorage` becomes `Handler\PdoSessionHandler`.
9dd4dbe Documentation, changelogs and coding standards.
Drak authored
341
68074a2 Changelog and upgrading changes.
Drak authored
342 * Refactor code using `$session->*flash*()` methods to use `$session->getFlashBag()->*()`.
6e2a7da @mvrhov Support session cookie options with cookie_ prefix
mvrhov authored
343
344 ### FrameworkBundle
345
346 * session options: lifetime, path, domain, secure, httponly were deprecated.
347 Prefixed versions should now be used instead: cookie_lifetime, cookie_path, cookie_domain, cookie_secure, cookie_httponly
348
349 Before:
350
351 ```
352 framework:
353 session:
354 lifetime: 3600
355 path: \
356 domain: example.com
357 secure: true
358 httponly: true
359 ```
360
361 After:
362
363 ```
364 framework:
365 session:
366 cookie_lifetime: 3600
367 cookie_path: \
368 cookie_domain: example.com
369 cookie_secure: true
370 cookie_httponly: true
371 ```
372
68074a2 Changelog and upgrading changes.
Drak authored
373 Added `handler_id`, defaults to `session.handler.native_file`.
374
375 ```
376 framework:
377 session:
378 storage_id: session.storage.native
379 handler_id: session.handler.native_file
380 ```
381
382 To use mock session storage use the following. `handler_id` is irrelevant in this context.
383
384 ```
385 framework:
386 session:
387 storage_id: session.storage.mock_file
388 ```
389
Something went wrong with that request. Please try again.