Symfony新的字段类型

时间:2014-05-24 10:17:54

标签: php forms symfony

我想在表单中添加自定义字段类型。看起来别名不起作用:

bundle_dir / services.yml

code_cats.type.extjstime:
    class: CodeCats\PanelBundle\Form\Type\ExtjsTimeType
    tags:
        - {name: form.type, alias: extjstime}

我的表单构建器:

...
      //not working with alias
      ->add('endedTime', 'extjstime') 
      //this one is working
      ->add('endedTime', new ExtjsTimeType())

我的调试:

 php app/console container:debug code_cats.type.extjstime
[container] Information for service code_cats.type.extjstime
Service Id       code_cats.type.extjstime
Class            CodeCats\PanelBundle\Form\Type\ExtjsTimeType
Tags
    - form.type                      (alias: extjstime)
Scope            container
Public           yes
Synthetic        no
Required File    -

更新 我的表单构建器是:

namespace CodeCats\PanelBundle\Form\Type;


class ExtjsTimeType extends AbstractType {


    public function getParent()
    {
        return 'text';
    }

    public function getName()
    {
        return 'extjstime';
    }
}

1 个答案:

答案 0 :(得分:0)

1 使用别名

services:
    code_cats.type.extjstime:
        class: CodeCats\PanelBundle\Form\Type\ExtjsTimeType
        tags:
            - {name: form.type, alias: extjstime}

2 添加方法getName()

<?php

namespace CodeCats\PanelBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class ExtjsTimeType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // ...
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
       // ...
    }

    public function getName()
    {
        return 'extjstime';
    }
}