Php 以symfony格式上载图像

Php 以symfony格式上载图像,php,symfony,symfony-3.3,Php,Symfony,Symfony 3.3,我有一个奇怪的问题。我在表单中添加了一个上传图像字段。当我在twig文件中使用此代码时,一切都正常工作 {{ form_start(form) }} <button>d</button> {{ form_end(form) }} 这是CategoryType.php use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\FileType; use S

我有一个奇怪的问题。我在表单中添加了一个上传图像字段。当我在twig文件中使用此代码时,一切都正常工作

{{ form_start(form) }}
<button>d</button>
{{ form_end(form) }}
这是CategoryType.php

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class CategoryType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name')
            ->add('icon')
            ->add('file',FileType::class, array(
                    'multiple'    => false,
                    'attr' => array(

                        'accept' => 'image/*',
                    )
                )
            )       ;
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Bridge\TravelBundle\Entity\Category'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'Bridge_TravelBundle_Category';
    }
}

此属性
enctype='multipart/form data'
form
标记中丢失

你应该只写
表单开始
表单结束
,而不是自己写
表单
标签

您还可以将自定义属性与
form\u start
函数放在一起,如下所示

{{ form_start(form, { 'attr': {'class': 'foo', 'id': 'bar' } }) }} 
另外,
form\u end
非常重要,因为它还打印出
form\u rest
和任何缺少的字段

<form method="POST" id="demo-form2" data-parsley-validate class="form-horizontal form-label-left">


你能发布你的CategoryType类并转储数据吗$image@HoangND我添加了CategoryType,这是wha var_dump($image)return:C:\wamp64\www\BridgeTravel\src\Bridge\TravelBundle\Controller\AdminController.php:207:string'3.jpg'(长度=5)我认为您在表单标记中缺少以下内容:enctype='multipart/form data',您应该只使用表单开始和表单结束,而不是手动放置表单标记。如果你需要为表单标签添加属性,你可以用表单开始来做,这里是你如何为表单添加属性{{form开始(表单,{'attr':{'class':'foo','id':'bar',…}}}}}我还有一个问题,我希望你能帮助我,你知道我如何让表单一次上传多个图像吗?现在它只上载一个图像,当我更改'multiple'=>true并尝试上载图像时,我得到一个错误“类型为“string”的预期参数”,“array”给定“您需要使用CollectionType尝试以下操作:$builder->add('pictures',CollectionType::class,['type'=>FileType::class]);好的,我做了更改,在CategoryType中添加了这一行,但是它在视图中没有显示“选择文件”,所以我不能上传文件!请帮助我它没有显示任何内容的原因是因为默认情况下集合为空。如果您使用的是mopa引导包,您可以实现add按钮来添加更多的文件输入,否则请检查此项,检查关于集合类型的Symfony指南。
{{ form_start(form, { 'attr': {'class': 'foo', 'id': 'bar' } }) }} 
<form method="POST" id="demo-form2" data-parsley-validate class="form-horizontal form-label-left">
{{ form_start(form, { 'attr': { 'id': 'demo-form2', 'data-parsley-validate': null, 'class': 'form-horizontal form-label-left' } }) }}
</form>
{{ form_end(form) }}