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

Skip to content

Commit c03164e

Browse files
committed
[form] lazy trans post_max_size_message.
1 parent 0f6bc0b commit c03164e

File tree

5 files changed

+22
-6
lines changed

5 files changed

+22
-6
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,13 @@ public function configureOptions(OptionsResolver $resolver)
146146
};
147147
};
148148

149+
// Wrap "post_max_size_message" in a closure to translate it lazily
150+
$uploadMaxSizeMessage = function (Options $options) {
151+
return function () use ($options) {
152+
return $options['post_max_size_message'];
153+
};
154+
};
155+
149156
// For any form that is not represented by a single HTML control,
150157
// errors should bubble up by default
151158
$errorBubbling = function (Options $options) {
@@ -207,9 +214,11 @@ public function configureOptions(OptionsResolver $resolver)
207214
'action' => '',
208215
'attr' => $defaultAttr,
209216
'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.',
217+
'upload_max_size_message' => $uploadMaxSizeMessage, // internal
210218
));
211219

212220
$resolver->setAllowedTypes('label_attr', 'array');
221+
$resolver->setAllowedTypes('upload_max_size_message', array('callable'));
213222
}
214223

215224
/**

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

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

8080
$form->addError(new FormError(
81-
$form->getConfig()->getOption('post_max_size_message'),
81+
call_user_func($form->getConfig()->getOption('upload_max_size_message')),
8282
null,
8383
array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize())
8484
));

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
@@ -86,7 +86,7 @@ public function handleRequest(FormInterface $form, $request = null)
8686
$form->submit(null, false);
8787

8888
$form->addError(new FormError(
89-
$form->getConfig()->getOption('post_max_size_message'),
89+
call_user_func($form->getConfig()->getOption('upload_max_size_message')),
9090
null,
9191
array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize())
9292
));

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