Blog Discoveries, best practices and opinions

Gestion des images dans symfony

Lorsqu'un Schtroumpf est supprimé ou que son image est modifiée, il faut que nous supprimions son ancienne image. Pour ce faire, nous allons exploiter les méthodes postUpdate et postDelete de la classe Doctrine_Record dont hérite notre Schtroumpf'modèle. // lib/model/doctrine/Schtroumpf.class.php class Schtroumpf extends BaseSchtroumpf { // ... /** * Gets the path of the picture * * @param string $filename Picture filename (null to use the current value) * * @return string or null if the filename is empty */ public function getPicturePath($filename = null) { if (null === $filename) { $filename = $this->picture; } if (empty($filename)) { return null; } return $this->picture_directory_path . DIRECTORY_SEPARATOR . $filename; } public function postUpdate(Doctrine_Event $event) { $modified = $event->getInvoker()->getModified(true); if (array_key_exists($field, $modified) && !empty($modified[$field]) && $modified[$field] != $event->getInvoker()->getPicture() ) { @unlink($event->getInvoker()->getPicturePath($modified[$field])); } } public function postDelete(Doctrine_Event $event) { foreach ( $this->_options as $field => $params ) { if (null !== $path = $event->getInvoker()->getPicturePath()) { @unlink($path); } } } } Le mot de la fin Read more