Wenn Sie das Format Ihres Datumsfelds je nach Gebietsschema ändern möchten, müssen Sie dies tun Erstellen Sie ein benutzerdefiniertes Feld und verwenden Sie es anstelle von Datum. Es ist die einzige Art, die mir bewusst ist.
zunächst den Dienst erstellen und das Gebietsschema in den Argumenten übergeben:
# 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 }
Erstellen Sie die Klasse mit dem Code für den neuen Feldtyp. Wie Sie sehen können, ist es auf dem Feldtyp Datum basiert und ändert das Format auf dem aktuellen Gebietsschema abhängig:
// 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';
}
}
es in Ihrer Anwendung verwenden anstelle des date
Feldtyp:
$builder->add('date_created', 'localedate', array(
'widget' => 'single_text',
));
es Hoffnung hilft.
Mit freundlichen Grüßen.
Sie können versuchen, benutzerdefinierten Formulartyp zu erstellen, http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html –