我的应用程序正在运行,但是当我使用自定义表单字段类型(shtumi_daterange)时,如下所示:
public function buildForm(SymfonyComponentFormFormBuilderInterface $builder, array $options)
{
$dateRange4 = new DateRange('m/d/Y');
$dateRange4->parseData('03/27/2012 - 04/05/2012');
$builder->add('builddate', "shtumi_daterange", array('required'=>false, 'default'=>$dateRange4));
}
发生此错误:
Uncaught exception 'SymfonyComponentFormExceptionFormException' with
message 'Could not load type "shtumi_daterange"' in
../vendor/symfony/form/Symfony/Component/Form/FormRegistry.php:95
我想,我需要这样的东西:
<?php
$app->register(new SilexProviderTwigServiceProvider(), array(
'twig.path' => $path_ext_dir_abs . '/views',
'twig.form.templates' => array('form_div_layout_custom.html.twig'),
'form.type.shtumi_daterange' => 'ShtumiUsefulBundleFormTypeDateRangeType',
));
但我只是不知道/找到正确的符号!
从symfony文档中,我找到了这个如何注册自定义表单字段类型的示例,但我无法转换它以使其与silex一起运行:
services:
form.type.gender:
class: AcmeDemoBundleFormTypeGenderType
arguments:
- "%genders%"
tags:
- { name: form.type, alias: gender }
我通过扩展FormServiceProvider
来实现这一点。
use SymfonyComponentFormFormFactoryInterface;
$app->extend('form.factory', function (FormFactoryInterface $factory) {
$factory->addType(new MyType());
return $factory;
});
您无需注册即可使用它。您可以将新实例作为 add
的第二个参数传递:
use ShtumiUsefulBundleFormTypeDateRangeType;
/* ... */
public function buildForm(FormBuilderInterface $builder, array $options)
{
$dateRange4 = new DateRange('m/d/Y');
$dateRange4->parseData('03/27/2012 - 04/05/2012');
$builder->add('builddate', new DateRangeType(), array('required'=>false, 'default'=>$dateRange4));
}
您链接的文档中提到了它。