Create a simple DataTransformer from a DateTime object into a string and a new form type called ie 'hidden_datetime', which uses the new DataTransformer and has a hidden form type as the parent.
<?php
namespace YourProject\YourBundle\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface;
class DateTimeToStringTransformer implements DataTransformerInterface
{
public function __construct()
{
}
public function transform($datetime)
{
if (null === $datetime) {
return '';
}
return $datetime->format('Y-m-d H:i:s');
}
public function reverseTransform($datetimeString)
{
$datetime = new \DateTime($datetimeString);
return $datetime;
}
}
..
<?php
namespace YourProject\YourBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Form\FormBuilderInterface;
use YourProject\YourBundle\Form\DataTransformer\DateTimeToStringTransformer;
class HiddenDateTimeType extends AbstractType
{
public function __construct()
{
}
public function getName()
{
return 'hidden_datetime';
}
public function getParent()
{
return 'hidden';
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$transformer = new DateTimeToStringTransformer();
$builder->addModelTransformer($transformer);
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
parent::setDefaultOptions($resolver);
$resolver->setDefaults(array(
));
}
}
register a new form type 'hidden_datetime' as a service in services.yml
yourproject.hidden_datetime.form.type:
class: YourProject\YourBundle\Form\Type\HiddenDateTimeType
tags:
- { name: form.type, alias: hidden_datetime }
The new type hidden_datetime can then be used in your form:
// In myclassType
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('createdAt','hidden_datetime')
->add('comment','textarea')
;
}
source
share