Странная ошибка "Вызов функции-члена move () для необъекта" в Symfony2 - PullRequest
2 голосов
/ 22 сентября 2011

Я добавляю функцию загрузки файла в мою форму в Symfony2.Я следовал документации здесь , но постоянно получаю следующую ошибку:

Неустранимая ошибка: вызов функции-члена move () для необъекта

Дело в том, что строка кода, на которую он ссылается, такова:

$this->file->move($this->getUploadRootDir(), $this->file->getClientOriginalName());

Это строка кода, которую я взял из документации.Я не совсем уверен, почему он стонет по поводу move().Я проверил, не пропускаю ли я какие-либо файлы, но не могу.

Нужно ли создавать ссылку на это?Или я пропустил файл?

Приветствия

РЕДАКТИРОВАТЬ:

Я добавил следующий код в начало функции upload():

// the file property can be empty if the field is not required
if (null === $this->file) {
    return;
}

Однако мне теперь выдаются следующие ошибки:

1/2: Исключение: Сериализация 'Symfony \ Component \ HttpFoundation \ File \ UploadedFile' непозволено

и

2/2: Исключение: Symfony \ Bridge \ Doctrine \ DataCollector \ DoctrineDataCollector :: serialize () должно возвращать строку или NULL

Я не знаю, исправило ли то, что я сделал, предыдущую ошибку, так как теперь мне были представлены эти ошибки.

Ответы [ 3 ]

1 голос
/ 23 сентября 2011

Вы не можете сохранить свойство файла, вам нужно 2 свойства в вашей сущности, одно для хранения UploadedFile и другое для хранения имени файла (которое сохраняется).

/**
 * @ORM\Column(type="string", length=255, nullable=true)
 */
public $path;    

/**
 * @Assert\File(maxSize="6000000")
 */
public $file;

Вы добавляете только $file собственность на вашу форму.

1 голос
/ 15 февраля 2013

Добавить функцию

/**
 * @ORM\PrePersist()
 * @ORM\PreUpdate()
 */
public function preUpload() {
    if (null !== $this->file) {
            $this->path = $this->file->getClientOriginalName();
    }
}

затем в функции загрузки

public function upload() {
    if (null === $this->file) {
        return;
    }

    if ($this->file->move($this->getUploadRootDir(), $this->path)) {
        // ok uploaded
    }else{
       echo "failed to upload";
    }
}
0 голосов
/ 22 сентября 2011

Возможно, у вас есть

$this->file == null

Убедитесь, что вы установили его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...