Se si desidera modificare il formato del campo della data in base alle impostazioni locali, sarà necessario crea un campo personalizzato e usalo al posto della data. È l'unico modo di cui sono a conoscenza.
In primo luogo, creare il servizio e passare il locale negli argomenti:
# src/Acme/DemoBundle/Resources/config/services.yml
services:
acme_demo.form.type.localedate:
class: Acme\DemoBundle\Form\Type\LocaleDateType
arguments:
- "%locale%"
tags:
- { name: form.type, alias: localedate }
creare la classe con il codice per il nuovo tipo di campo. Come si può vedere, si basa sulla data di tipo di campo e cambia il formato a seconda della locale corrente:
// src/Acme/DemoBundle/Form/Type/LocaleDateType.php
namespace Acme\DemoBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class LocaleDateType extends AbstractType
{
private $locale;
public function __construct($locale)
{
$this->locale = $locale;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'format' => $this->getFormat(),// return the format depending on locale
));
}
private function getFormat() {
switch($this->locale) {
case 'es':
return 'dd-MM-yyyy';// return valid date format for this locale
default:
return 'yyyy-MM-dd';
}
}
public function getParent()
{
return 'date';
}
public function getName()
{
return 'localedate';
}
}
utilizzarlo nella vostra applicazione invece del tipo date
campo:
$builder->add('date_created', 'localedate', array(
'widget' => 'single_text',
));
spero che aiuta.
Cordiali saluti.
Si può cercare di creare tipo di modulo personalizzato, http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html –