我想在表单中添加自定义字段类型。看起来别名不起作用:
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';
}
}
答案 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';
}
}