我已经向FileType字段添加了一些内容,例如显示有关允许文件大小的信息和适当的预览图像。
现在,我想要实现的是,对于非强制性文件字段,还显示了一个附加(未映射)复选框,允许用户删除现有文件。
首先我尝试了form typ extension。现在我使用专用的表单类型。但是,我无法应付它。
以下是我目前正在做的事情:
自定义文件类型:
template<int i>
struct Class1{
void foo(int j)
{
if (j%i != 0)
throw std::invalid_argument("j is not evenly divisible by i");
std::cout << "j is evenly divisble by i" << std::endl;
}
};
struct Class2
{
int j = 4;
void CallFoo()
{
Class1<2> c1;
c1.foo(j); // works
j = 3;
c1.foo(j); // throws
}
};
模板:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$fieldName = $builder->getForm()->getConfig()->getName();
$builder->add($fieldName, 'Symfony\Component\Form\Extension\Core\Type\FileType', $options);
if ($options['required']) {
return;
}
$builder->add($fieldName . 'DeleteFile', 'Symfony\Component\Form\Extension\Core\Type\CheckboxType', [
'mapped' => false,
'label' => 'Delete existing file',
'required' => false,
'attr' => [
'title' => 'Delete this file ?'
]
]);
}
目前根本没有显示输入字段(文件字段和复选框都没有显示)。
对于我做错的更好的方法或指针有任何想法吗?
答案 0 :(得分:0)
我可以通过替换
来解决这个问题{{ block('file_widget') }}
通过
<input type="file" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>