【发布时间】:2013-04-05 05:18:00
【问题描述】:
我正在尝试按名称构建一个 Symfony 表单(在 Silex 中)。使用下面的配置,我相信我应该可以调用$form = $app['form.factory']->createBuilder('address');,但是FormRegistry找不到这种类型的表单。
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormTypeExtensionInterface;
class AddressType extends AbstractType implements FormTypeExtensionInterface
{
public function getName()
{
return 'address';
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('addressee', 'text');
// .. fields ..
$builder->add('country', 'text');
}
public function getExtendedType()
{
return 'form';
}
}
然后使用form.type.extensions 提供程序将其添加到表单注册表中:
$app['form.type.extensions'] = $app->share($app->extend('form.type.extensions', function($extensions) use ($app) {
$extensions[] = new AddressType();
return $extensions;
}));
我还需要做其他事情或以这种方式构建表单吗?
【问题讨论】:
-
你的地址类型类有没有返回'form'的函数getParent()?
标签: php symfony-forms silex