2014-11-13 1 views
1

Я использую пакет Upload OneUp с приютом для детей, и я не уверен, как обрабатывать очищающие объекты (созданные слушателем), после файла была очищена командой «четкие сироты» - как это обычно обрабатывается?Удаление сиротских объектов после команды «clear-orphans»

Мне бы хотелось увидеть событие, уволенное за каждый очищаемый файл (передав имя файла и его сопоставление), но ничего не нашли (при условии, что диспетчер событий доступен для команды).

ответ

1

Идея детского дома в OneupUploaderBundle заключается в том, что вы не загрязняете свою папку для загрузки файлами, которые не принадлежат никаким объектам. Это означает, что если вы используете загруженные файлы в своих сущностях, вы должны вывести их из приюта. Если вы настроили сопоставление для использования приюта, все загруженные файлы будут сохранены в отдельной папке после загрузки.

Citing the documentation:

Они будут перемещены в нужное место, как только вы вызвать uploadFiles метод на хранении.

Это означает, что вы можете переместить логику из слушателя событий (который будет называться не меньше), но переместить его в контроллер, где вы хотите, чтобы, наконец, загружать и хранить файлы в детском доме.

// src/Acme/Controller/AcmeController.php 

class AcmeController extends Controller 
{ 
    public function storeAction() 
    { 

     // ... 
     if ($form->isValid()) { 
      $orphanageManager = $this->get('oneup_uploader.orphanage_manager')->get('gallery'); 

      // upload all files to the configured storage 
      $files = $manager->uploadFiles(); 

      // your own logic to apply the files to the entity 
      // ... 
     } 

    } 
} 

Обязательно используйте приют для сирот, если вам действительно нужно. It has some drawbacks.

+0

Спасибо за тщательный ответ! Моя проблема в том, что мне нужно захватить исходное имя файла, что очень просто, используя прослушиватель - захватить исходную предварительную загрузку файла, захватить новую отправку имени файла и сохранить оба значения в сущности (именно этот объект нужно удалить, если форма никогда не представляется). Я не думаю, что можно получить оригинал от менеджера приюта. Детский дом идеально подходит для моего конкретного случая использования (который обеспечивает возможность загрузки нескольких вложений в автономную форму, которые никогда не могут быть отправлены) – dblack

+0

Что касается вопроса о том, как пользователи получают файлы из предыдущей попытки загрузки файлов в форму, простым обходным решением было бы очистить файлы, загруженные для сеанса, по запросу «GET» ... Как вы относитесь к понятному методу в объекте FilesystemOrphanageStorage (который очищает все файлы, отправленные на сеанс), что тогда мы могли бы позвонить в контроллер? – dblack