Name: ElaoFormTranslationBundle
Owner: Elao
Description: Provides a nice way of generating translation keys for form fields
Created: 2014-01-22 14:02:42.0
Updated: 2017-11-10 04:44:50.0
Pushed: 2016-11-25 20:31:16.0
Size: 69
Language: PHP
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This bundle provides a nice way of generating translation keys for form fields in a “logic” way. It is used mainly to generate automatic labels on fields but can be use to build any key.
For example, in a form RegisterType
named “register” the key for its field “name” would be form.register.children.name.label
.
Another more advanced example would be a field “emails” which is a collection
of text
inputs, it'll generate:
form.register.children.emails.label
form.register.children.emails.label_add
form.register.children.emails.label_delete
form.register.children.emails.children.prototype.label
Or in yml
:
:
register:
children:
emails:
label: # add your trans for the fieldset ex: Email
label_add: # add your trans for add button ex: Add an email
label_delete: # add your trans for remove button ex: Remove an email
children:
prototype:
label: # add your trans for the label of one email field ex: Email address
Note: The keys will only be generated at runtime and won't be dumped when you use translation:update
yet (we're working on it).
Add ElaoFormTranslationBundle to your composer.json:
"require": {
"elao/form-translation-bundle": "1.2.*"
}
Now download the bundle by running the command:
p composer.phar update elao/form-translation-bundle
Register the bundle in the kernel:
p
pp/AppKernel.php
ic function registerBundles()
$bundles = array(
// ...
new Elao\Bundle\FormTranslationBundle\ElaoFormTranslationBundle(),
);
In order to generate translation keys automatically, you have 2 options:
If you set the the “label” option of a form field to true, a key will be generated and set as the field label. Otherwise we won't generate your labels !
p
s RegisterType extends AbstractType
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', null, array(
'label' => true // Will generate: "form.register.children.name.label"
));
->add('email', null, array(
'label' => false // Will NOT generate a `<label>` in the `HTML`
));
->add('email', null, array(
'label' => 'my.custom.key' // Default behavior
));
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'register';
}
If you want to generate keys for all your labels you can set the option auto_generate
to true
:
elao_form_translation:
auto_generate: true
This will set default label value to true
so keys will be generated for every label.
If you need to override this behavior, you can still provide a label
key for your field in order to use your translation key. In this case, no keys will be generated.
Keys are built following this pattern:
[root][separator](parent_field_name)[separator][children][separator](field_name)[key]
You can customize (and remove) any of these tokens to change the way keys are built:
_form_translation:
blocks:
# Prefix for children nodes (string|false)
children: "children"
# Prefix for prototype nodes (string|false)
prototype: "prototype"
# Prefix at the root of the key (string|false)
root: "form"
# Separator te be used between nodes (string|false)
separator: "."
For example, if you just need simple keys you could do with the following configuration:
_form_translation:
blocks:
root: false
children: false
separator: "_"
Which would generate that kind of keys:
# (parent_field_name)[separator](field_name)[separator][key]
register_name_label
_form_translation:
# Can be disabled
enabled: true
# Generate translation keys for all missing labels
auto_generate: false
# Customize available keys
keys:
form:
label: "label"
help: "help"
# Add yours ...
collection:
label_add: "label_add"
label_delete: "label_delete"
# Add yours ...
# Customize the ways keys are built
blocks:
# Prefix for prototype nodes
prototype: "prototype"
# Prefix for children nodes
children: "children"
# Prefix at the root of the key
root: "form"
# Separator te be used between nodes
separator: "."