8000 [form] lazy trans `post_max_size_message`. · symfony/symfony@7797a16 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7797a16

Browse files
committed
[form] lazy trans post_max_size_message.
1 parent f876473 commit 7797a16

File tree

5 files changed

+21
-6
lines changed

5 files changed

+21
-6
lines changed

src/Symfony/Component/Form/Extension/Core/Type/FormType.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,12 @@ public function configureOptions(OptionsResolver $resolver)
185185
return $attributes;
186186
};
187187

188+
$uploadMaxSizeMessage = function (Options $options) {
189+
return function () use ($options) {
190+
return $options['post_max_size_message'];
191+
};
192+
};
193+
188194
$resolver->setDefaults(array(
189195
'data_class' => $dataClass,
190196
'empty_data' => $emptyData,
@@ -207,8 +213,10 @@ public function configureOptions(OptionsResolver $resolver)
207213
'action' => '',
208214
'attr' => $defaultAttr,
209215
'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.',
216+
'upload_max_size_message' => $uploadMaxSizeMessage,
210217
));
211218

219+
$resolver->setAllowedTypes('upload_max_size_message', array('callable'));
212220
$resolver->setAllowedTypes('label_attr', 'array');
213221
}
214222

src/Symfony/Component/Form/Extension/HttpFoundation/HttpFoundationRequestHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function handleRequest(FormInterface $form, $request = null)
8181
$form->submit(null, false);
8282

8383
$form->addError(new FormError(
84-
$form->getConfig()->getOption('post_max_size_message'),
84+
call_user_func($form->getConfig()->getOption('upload_max_size_message')),
8585
null,
8686
array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize())
8787
));

src/Symfony/Component/Form/Extension/Validator/Type/UploadValidatorExtension.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ public function configureOptions(OptionsResolver $resolver)
4242
{
4343
$translator = $this->translator;
4444
$translationDomain = $this->translationDomain;
45-
46-
$resolver->setNormalizer('post_max_size_message', function (Options $options, $errorMessage) use ($translator, $translationDomain) {
47-
return $translator->trans($errorMessage, array(), $translationDomain);
45+
$resolver->setNormalizer('upload_max_size_message', function (Options $options, $message) use ($translator, $translationDomain) {
46+
return function () use ($translator, $translationDomain, $message) {
47+
return $translator->trans(call_user_func($message), array(), $translationDomain);
48+
};
4849
});
4950
}
5051

src/Symfony/Component/Form/NativeRequestHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public function handleRequest(FormInterface $form, $request = null)
8989
$form->submit(null, false);
9090

9191
$form->addError(new FormError(
92-
$form->getConfig()->getOption('post_max_size_message'),
92+
call_user_func($form->getConfig()->getOption('upload_max_size_message')),
9393
null,
9494
array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize())
9595
));

src/Symfony/Component/Form/Tests/Extension/Validator/Type/UploadValidatorExtensionTest.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension;
1515
use Symfony\Component\OptionsResolver\OptionsResolver;
16+
use Symfony\Component\OptionsResolver\Options;
1617

1718
class UploadValidatorExtensionTest extends TypeTestCase
1819
{
@@ -29,10 +30,15 @@ public function testPostMaxSizeTranslation()
2930

3031
$resolver = new OptionsResolver();
3132
$resolver->setDefault('post_max_size_message', 'old max {{ max }}!');
33+
$resolver->setDefault('upload_max_size_message', function (Options $options, $message) {
34+
return function () use ($options) {
35+
return $options['post_max_size_message'];
36+
};
37+
});
3238

3339
$extension->configureOptions($resolver);
3440
$options = $resolver->resolve();
3541

36-
$this->assertEquals('translated max {{ max }}!', $options['post_max_size_message']);
42+
$this->assertEquals('translated max {{ max }}!', call_user_func($options['upload_max_size_message']));
3743
}
3844
}

0 commit comments

Comments
 (0)
0