我正在尝试以下情况:
在myclassType中
public function buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('day','hidden')
        ->add('date', 'hidden' ) 
        ->add('hours')
        ->add('comment','textarea')
    ;
}在myclass中
class myclass
{
    //.. Other stuff
    /**
     * @ORM\Column(type="date")
     *
     * @var date $date
     */
    protected $date;
}在呈现时,我得到了以下错误:
An exception has been thrown during the rendering of a template ("Catchable Fatal Error:
 Object of class DateTime could not be converted to string in 
C:\wamp\www\PMI_sf2\app\cache\dev\twig\fb\40\8957f80f2358a6f4112c3427b387.php line 684") in
 form_div_layout.html.twig at line 171.你知道我怎么能把约会类型字段隐藏起来吗?
发布于 2014-01-13 13:14:32
从DataTransformer对象创建一个简单的DateTime对象到string,并创建一个名为“hidden_datetime”的新表单类型,它使用新的DataTransformer,并将隐藏的表单类型作为父级。
<?php
namespace YourProject\YourBundle\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface;
class DateTimeToStringTransformer implements DataTransformerInterface
{
    public function __construct()
    {   
    }
    /**
     * @param \DateTime|null $datetime
     * @return string
     */
    public function transform($datetime)
    {
        if (null === $datetime) {
            return '';
        }       
        return $datetime->format('Y-m-d H:i:s');
    }
    /**
     * @param  string $datetimeString
     * @return \DateTime
     */
    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(
        ));
    }    
}将新的“hidden_datetime”表单类型注册为services.yml中的服务
yourproject.hidden_datetime.form.type:
    class: YourProject\YourBundle\Form\Type\HiddenDateTimeType
    tags:
        - { name: form.type, alias: hidden_datetime } 然后,可以在表单中使用新的hidden_datetime类型:
// IN myclassType
public function buildForm(FormBuilder $builder, array $options)
{
    $builder
            ->add('createdAt','hidden_datetime')
            ->add('comment','textarea')
    ;
}https://stackoverflow.com/questions/10709773
复制相似问题