Je vous explique mon problème, je suis en train de créer un site sur symfony 4.3 dont le but est de fournir des vidéos tutoriels à mes clients (fictifs). Je suis en train de construire le back-end et j'en suis au passage ou je veux ajouter des vidéos au niveau du back-end afin de les publier ensuite.
J'ai crée :
-un formulaire qui comprend les différents champs de saisies (titre, description, date etc...);
- un controller qui va récupérer les données du form pour la bdd
- une vue qui affiche le formulaire.
Je souhaite ajouter à cette vue la possibilité de rajouter la vidéo avec un bouton qui ouvre une modale.
Dans cette modale je veux ouvrir un dossier en particulier que j'ai nommé tmpfiles ou il n'y aura que les vidéos. De cette liste je veux sélectionner une vidéo valider mon form et rajouter la vidéo à une liste se trouvant en back-end.
En résumé on ajoute un titre, une date, une description, on clique sur un bouton du genre "choisir une vidéo", cela nous ouvre une modale et dans cette modale on y voit la liste des vidéos contenues dans un dossier se trouvant à la base du projet. On n'a pas un parcourir classic mais un accès à un dossier spécifique contenu dans le dossier du projet.
Ce que j'ai déjà fait :
Donc j'ai créée le chemin vers ce dossier dans mon fichier service.yaml =>
Code : Tout sélectionner
locale: 'en'
uploads_directory: '%kernel.project_dir%/tmpfiles'Code : Tout sélectionner
class VideoController extends AbstractController
{
/**
* @Route("/admin/video", name="video_video")
* @param Request $request
* @return RedirectResponse|Response
*/
public function register(Request $request)
{
$video = new Video();
$form = $this->createForm(VideoType::class, $video);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// On enregistre la video dans la base
$em = $this->getDoctrine()->getManager();
$em->persist($video);
$em->flush();
return $this->redirectToRoute('video_video');
}
return $this->render(
'video/video.html.twig',
array('form' => $form->createView())
);
}
/**
* @Route("/admin/video/modal", name="modal_video")
* @param Request $request
* @return RedirectResponse|Response
*/
public function finder(Request $request)
{
$uploadsDir = $this->getParameter('uploads_directory');
$finder = !is_dir($uploadsDir) ? [] : (new Finder())->files()->in($uploadsDir);
return $this->render(
'video/modal.html.twig',
array('finder' => $finder)
);
}
}Code : Tout sélectionner
{% extends 'base.html.twig' %}
{% block body %}
<div class="container">
<div class="row">
<div class="col text-center">
<div class="col-xs-12">
<h1>Créer une vidéo</h1>
{{ form_start(form) }}
{{ form_row(form.titre, {'label': 'Titre : ', 'attr' :{'placeholder': 'titre ...' }}) }}
{{ form_row(form.date) }}
{{ form_row(form.descriptif, {'label': 'Description : ', 'attr' :{'placeholder': 'description ...' }}) }}
{{ form_row(form.duree, {'label': 'Durée : ' }) }}
{{ form_row(form.Projet, {'label': 'Projets : ' }) }}
{{ form_row(form.Hashtag, {'label': 'Hashtags : ' }) }}
{{ form_row(form.file) }}
<!-- zone ou je veux mettre le bouton menant à la vue contenant le modal -->
<!-- bouton pour valider le formulaire -->
<button type="submit" class="btn btn-success">Enregister </button>
{{ form_end(form) }}
</div>
</div>
</div>
</div>
{% block javascripts %}
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script>
{% endblock %}
{% endblock %}<br><br>Code : Tout sélectionner
<!-- The Modal -->
<aside class="modal" data-target="#myModal">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Parcours des dossiers</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- Modal body -->
<div class="modal-body">
<div class="row">
<div class="col">
<h2>Open file</h2>
<hr>
</div>
</div>
{# Contenu de la modal #}
{% for file in finder %}
<li>
<a href="tmpfiles/{{ file.relativePathName }}">
{{ file.relativePathName }}
</a>
</li>
{% endfor %}
{# fin du contenu modal#}
<div class="row" style="display: none" id="alert-box">
<div class="col">
<div class="alert alert-danger">File does not longer exists.</div>
</div>
</div>
<div class="browser"></div>
</div>
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" class="btn btn-primary">Confirm</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</aside>
{% block javascripts %}
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script>
{% endblock %}Du coup j'ai pensé à séparer la modale dans une vue et peut-être de l'ouvrir grâce à un bouton se trouvant dans l'autre vue...
Je suis débutante dans tout ça du coup ça fait des jours que je tourne en rond.... Je sais que je dois sans doute utiliser de l'ajax et du js, j'ai la compréhension mais pas l'application....
J'ai aussi testé l'include de twig et ça me rends la même erreur.
Si une âme charitable pouvait m'aider ça serait top.