Comment obtenir web chemin d'accès au répertoire à partir de l'intérieur de l'Entité?
J'ai fait des recherches sur la Comment Gérer les Uploads de Fichier avec Doctrine et je ne veux pas coder en dur la __DIR__.'/../../../../web/'.$this->getUploadDir();
chemin, car peut-être que dans l'avenir je vais changer le web/
répertoire. Comment faire pour ne plus souple? J'ai trouvé cette mais il ne répond pas à la question de savoir comment ne plus souple de l'intérieur de l'Entité
OriginalL'auteur Mikhail | 2012-10-15
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas utiliser la classe d'entité comme une forme de modèle ici. C'est tout simplement pas adapté pour ce travail. Si l'entité a l'
path
de la propriété, les seules valeurs valides il peut magasins sont:null
(dans le cas de l'absence du fichier) et chaîne représentant le chemin d'accès au fichier.Créer une catégorie distincte, ça va être un modèle pour votre forme:
Dans votre programme de traitement de formulaire (objet distinct configuré par le biais de la DIC; recommandé) ou le contrôleur:
À l'intérieur de gestionnaire de formulaire/contrôleur, vous pouvez accéder à toutes les dépendances/propriétés de la DIC (y compris le chemin d'accès au répertoire de téléchargement).
Le tutoriel que vous avez des liens entre les œuvres, mais c'est un exemple de mauvaise conception. Les entités ne devrait pas être conscient de téléchargement de fichiers.
Basé sur l'expérience antérieure, je vous suggère de stocker chemin absolu (ou au moins par rapport à webroot chemin d'accès) ainsi..
Créer un "listener", qui s'abonne
preRemove
(oupreDelete
) événement (voir la section comment) et de supprimer le lien d'un fichier.OriginalL'auteur Crozin
Pour accéder au répertoire racine de l'extérieur du contrôleur, vous pouvez simplement injecter '%noyau.root_dir% " comme un argument dans votre configuration des services.
Ensuite, vous pouvez obtenir à la racine du site web dans le constructeur de la classe:
OriginalL'auteur redjam13
Vous pouvez utiliser une variable dans vos paramètres.yml.
Comme cela, vous pourrez changer de chemin, quand vous voulez.
par exemple :
Ce n'est pas de la responsabilité de votre entité afin de savoir où le document est store. Yo peut déplacer cette responsabilité à votre contrôleur. Ou vous pouvez ajouter un attribut de chemin d'accès à votre entité
OriginalL'auteur Benjamin Lazarecki
J'ai traité ce par la création d'une classe abstraite que les Entités peuvent s'étendre si ils sont gérer les uploads de fichier comme décrit dans la Documentation Symfony. J'ai créé les fichiers de tableau afin que je puisse créer une copie de l'actuel chemin d'accès au fichier dans l'ensemble des méthodes de sorte qu'il pourrait être supprimée du système de fichiers sur le succès de la mise à jour ou de supprimer sans définir d'autres propriétés de l'Entité adéquate.
__DIR__ . "/../../../../web/"
trop, mais ma question est comment faire pour l'éviter.Je ne suis pas sûr qu'il y en est un. Il me semblait être le meilleur que je pouvais faire était de le définir en un seul endroit.
l'a obtenu. Merci pour votre solution de Tom
OriginalL'auteur Tom Phillips