Php Symfony 3方法';猜扩展()和#x27;和';move()';找不到

Php Symfony 3方法';猜扩展()和#x27;和';move()';找不到,php,symfony,Php,Symfony,所以我一直在尝试上传多个文件并存储它们的位置。为了设置新的文件名,我尝试使用symfony文档中描述的guessExtension()方法,但由于某些原因,此方法以及move()方法未被识别,如图所示。这是怎么回事?我尝试过包含Symfony的File和UploadedFile类,但这并没有解决问题 AutoController.php if($form->isValid() && $form->isSubmitted()) {

所以我一直在尝试上传多个文件并存储它们的位置。为了设置新的文件名,我尝试使用symfony文档中描述的guessExtension()方法,但由于某些原因,此方法以及move()方法未被识别,如图所示。这是怎么回事?我尝试过包含Symfony的File和UploadedFile类,但这并没有解决问题

AutoController.php

        if($form->isValid() && $form->isSubmitted())
    {
        $powerType = $form['power_type']->getData();

        if($powerType == 'kw')
        {
            $auto->setPowerKw($form['powerKw']->getData());
            $auto->setPowerHp(ceil($form['powerKw']->getData() * 1.34));
        }
        else if($powerType == 'ag')
        {
            $auto->setPowerKw(ceil($form['powerKw']->getData() * 0.746));
            $auto->setPowerHp($form['powerKw']->getData());
        }

        // PLACEHOLDER
        $auto->setActive(true);
        // PLACEHOLDER

        // File uploading
        $files = $auto->getImages();
        $images = array();

        foreach($files as $file)
        {
            $fileName = md5(uniqid()).'.'.$file->guessExtension();

            $file->move(
                $this->getParameter('carAdds_directory'),
                $fileName
            );
            $images[$fileName] = $fileName;
        }

        $auto->setImages($images);

        $em = $this->getDoctrine()->getManager();
        $em->persist($auto);
        $em->flush();

        return $this->render('@Auto/auto/index.html.twig');
    }
实体类

   /**
* @var array
*
* @Assert\Image(
*     mimeTypes = {
*   "image/png",
*   "image/pjpeg",
*   "image/jpeg",
*   "image/gif"
* },
*     mimeTypesMessage="Failas yra netinkamo formato",
*     maxSize = "10M",
*     maxSizeMessage="Failas yra per didelis"
* )
* @ORM\Column(name="images", type="array")
*/
private $images;  /**
 * Set images
 *
 * @param array $images
 *
 * @return Auto
 */
public function setImages($images)
{
    $this->images = $images;

    return $this;
}

/**
 * Get images
 *
 * @return array
 */
public function getImages()
{
    return $this->images;
}
FormType类

            $builder->add('images', FileType::class, array(
            'label' => false,
            'label_attr' => array('class' => $label_offset),
            'required' => false,
            'attr' => array(
                'class' => $styles,
                'multiple' => 'multiple')))...
*编辑 好的,看起来这只是Php风暴没有识别方法,因为我没有遇到编译器错误,但是图像没有上传。

config.yml

    carAdds_directory: '%kernel.root_dir%/web/uploads/carAdds'

Php storm表示找不到要转到的声明。这可能是我的文件似乎没有上传的原因吗?如果是,我如何正确指定路径?

您在执行代码时是否真的遇到错误,或者只是Symfony中的自动完成?如果是后者:

/** @var File $file */
foreach($files as $file)
    {
...

应该做到这一点(您实际上可以键入/**而PHPStorm将自动完成其余部分)。

在编辑器中忽略该警报,它仍然有效


PhpStorm在方法确实存在的情况下无法找到这些方法。

好的,多亏了Preciel关于文件上载的文章,结果不是指定我的上载目录,比如:

carAdds_directory: '%kernel.root_dir%/web/uploads/carAdds'
我必须这样指定它

carAdds_directory: '%kernel.root_dir%/../web/uploads/carAdds'
但是,这仅在实体类中将$images参数设置为string时有效,但我希望同时上载多张图片,因此,当我将$images type设置为array时,每次都会得到一个空数组。以下是表单提交完成后我的数据库字段的外观


是的,这似乎只是PhpStorm,因为我在运行代码时没有遇到任何错误,但是图像似乎没有上传到任何地方。关于这一点,我在上传时发了一篇完整的帖子,读一下,它可能会帮你找到一些东西。;)事实证明,这只是自动完成,但在提交表单后,图像似乎不会上传到任何地方。