<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Symfony</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur le framework PHP Symfony. Avant de poster : FAQ Symfony et Cours Symfony.]]></description>
		<language>fr</language>
		<lastBuildDate>Tue, 14 Apr 2026 17:09:54 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Symfony</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Factorisation de mon code</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182626&amp;goto=newpost</link>
			<pubDate>Fri, 13 Mar 2026 13:33:50 GMT</pubDate>
			<description><![CDATA[Hello !  
J'ai écris un code...]]></description>
			<content:encoded><![CDATA[<div>Hello ! <br />
J'ai écris un code pour insérer un csv dans ma bdd avec Synfony ! Le code marche bien et j'ai aussi géré les erreur qui pouvait être lié à l'insertion mais le souci c'est que mon code est un peu trop répétitif : <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br /></div></td><td valign="top"><pre style="margin: 0">/.../
        <span style="color: #339933;">$originalFileName</span> = pathinfo<span class="br0">&#40;</span><span style="color: #339933;">$csvFile</span>-&gt;getClientOriginalName<span class="br0">&#40;</span><span class="br0">&#41;</span>, PATHINFO_FILENAME<span class="br0">&#41;</span>;                  
        <span style="color: #339933;">$safeFileName</span> = <span style="color: #339933;">$slugger</span>-&gt;slug<span class="br0">&#40;</span><span style="color: #339933;">$originalFileName</span><span class="br0">&#41;</span>;              
        <span style="color: #339933;">$newFileName</span> = <span style="color: #339933;">$safeFileName</span>.<span style="color: #FF0000;">'-'</span>.uniqid<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span style="color: #FF0000;">'.'</span>.<span style="color: #339933;">$csvFile</span>-&gt;guessExtension<span class="br0">&#40;</span><span class="br0">&#41;</span>;        
        <span style="color: #339933;">$csvFile</span>-&gt;move<span class="br0">&#40;</span><span style="color: #339933;">$fileDirectory</span>, <span style="color: #339933;">$newFileName</span><span class="br0">&#41;</span>;                    
        <span style="color: #339933;">$upload</span>-&gt;setCsvFile<span class="br0">&#40;</span><span style="color: #339933;">$newFileName</span><span class="br0">&#41;</span>;                   
        <span style="color: #339933;">$manager</span>-&gt;persist<span class="br0">&#40;</span><span style="color: #339933;">$upload</span><span class="br0">&#41;</span>;
        <span style="color: #339933;">$csv</span> = Reader::createFromPath<span class="br0">&#40;</span><span style="color: #339933;">$fileDirectory</span>.<span style="color: #339933;">$newFileName</span><span class="br0">&#41;</span>;                    
        <span style="color: #339933;">$csv</span>-&gt;setHeaderOffset<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>;
        <span style="color: #339933;">$csv</span>-&gt;setDelimiter<span class="br0">&#40;</span><span style="color: #FF0000;">';'</span><span class="br0">&#41;</span>;
        <span style="color: #339933;">$csv</span>-&gt;setEscape<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
        <span style="color: #339933;">$records</span> = <span style="color: #339933;">$csv</span>-&gt;getRecords<span class="br0">&#40;</span><span class="br0">&#41;</span>;   
&nbsp;
        <span style="color: #0000ff;">foreach</span> <span class="br0">&#40;</span><span style="color: #339933;">$records</span> <span style="color: #0000ff;">as</span> <span style="color: #339933;">$record</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span style="color: #339933;">$numero</span> = <span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">&quot;Identifiant de la fiche&quot;</span><span class="br0">&#93;</span>;
            <span style="color: #339933;">$date</span> = <span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">&quot;Date d'emission de la fiche&quot;</span><span class="br0">&#93;</span>;
            <span style="color: #339933;">$origine</span> = <span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Cas origine'</span><span class="br0">&#93;</span>;
            <span style="color: #339933;">$cloture</span> = <span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Cas cloture'</span><span class="br0">&#93;</span>;
            <span style="color: #339933;">$commentaire</span> = <span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Commentaire'</span><span class="br0">&#93;</span>;
            <span style="color: #339933;">$epidemi</span> = <span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Type de cas'</span><span class="br0">&#93;</span>;          
            <span style="color: #339933;">$score</span> = <span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Score'</span><span class="br0">&#93;</span>;   
&nbsp;
            <span style="color: #339933;">$infection</span> = <span style="color: #339933;">$manager</span>-&gt;getRepository<span class="br0">&#40;</span>Infection::<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>-&gt;findOneBy<span class="br0">&#40;</span><span class="br0">&#91;</span><span style="color: #FF0000;">'infection'</span> =&gt; mb_convert_encoding<span class="br0">&#40;</span><span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Type infection'</span><span class="br0">&#93;</span>, <span style="color: #FF0000;">'UTF-8'</span>, <span style="color: #FF0000;">'Windows-1252'</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;
            <span style="color: #339933;">$structure</span> = <span style="color: #339933;">$manager</span>-&gt;getRepository<span class="br0">&#40;</span>Structure::<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>-&gt;findOneBy<span class="br0">&#40;</span><span class="br0">&#91;</span><span style="color: #FF0000;">'nom'</span> =&gt; mb_convert_encoding<span class="br0">&#40;</span><span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Nom de la structure'</span><span class="br0">&#93;</span>, <span style="color: #FF0000;">'UTF-8'</span>, <span style="color: #FF0000;">'Windows-1252'</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;
&nbsp;
            <span style="color: #339933;">$commentaire</span> = mb_convert_encoding<span class="br0">&#40;</span><span style="color: #339933;">$commentaire</span>, <span style="color: #FF0000;">'UTF-8'</span>, <span style="color: #FF0000;">'Windows-1252'</span><span class="br0">&#41;</span>;
            <span style="color: #339933;">$epidemi</span> = mb_convert_encoding<span class="br0">&#40;</span><span style="color: #339933;">$epidemi</span>, <span style="color: #FF0000;">'UTF-8'</span>, <span style="color: #FF0000;">'Windows-1252'</span><span class="br0">&#41;</span>;
&nbsp;
&nbsp;
            <span style="color: #808080;">//verification du numero de la fiche et utilisation pour empecher upload de doublon</span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span>!<span class="br0">&#40;</span>is_numeric<span class="br0">&#40;</span><span style="color: #339933;">$numero</span><span class="br0">&#41;</span><span class="br0">&#41;</span> || <span class="br0">&#40;</span>strlen<span class="br0">&#40;</span><span style="color: #339933;">$numero</span><span class="br0">&#41;</span> !== <span style="color: #cc66cc;">5</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans le champs &quot;Identifiant de la fiche&quot;'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>
            <span style="color: #339933;">$signal</span> = <span style="color: #339933;">$manager</span>-&gt;getRepository<span class="br0">&#40;</span>Signalement::<span style="color: #0000ff;">class</span><span class="br0">&#41;</span>-&gt;findOneBy<span class="br0">&#40;</span><span class="br0">&#91;</span><span style="color: #FF0000;">'numero'</span> =&gt; <span style="color: #339933;">$numero</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span>is_null<span class="br0">&#40;</span><span style="color: #339933;">$signal</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$signal</span> = <span class="br0">&#40;</span><span style="color: #0000ff;">new</span> Signalement<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>-&gt;setNumero<span class="br0">&#40;</span><span style="color: #339933;">$numero</span><span class="br0">&#41;</span>;
                <span style="color: #339933;">$manager</span>-&gt;persist<span class="br0">&#40;</span><span style="color: #339933;">$signal</span><span class="br0">&#41;</span>;
            <span class="br0">&#125;</span>
&nbsp;
            <span style="color: #808080;">//verification de la date</span>
            <span class="br0">&#91;</span><span style="color: #339933;">$d</span>, <span style="color: #339933;">$m</span>, <span style="color: #339933;">$y</span><span class="br0">&#93;</span> = explode<span class="br0">&#40;</span><span style="color: #FF0000;">'/'</span>,<span style="color: #339933;">$date</span><span class="br0">&#41;</span>;
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span>!checkdate<span class="br0">&#40;</span><span style="color: #339933;">$m</span>, <span style="color: #339933;">$d</span>, <span style="color: #339933;">$y</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans le champ &quot;date d<span style="color: #800000;">\'</span>&eacute;mission&quot;'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>
            <span style="color: #339933;">$dbdate</span> = \DateTimeImmutable::createFromFormat<span class="br0">&#40;</span><span style="color: #FF0000;">'d/m/Y'</span>, <span style="color: #339933;">$date</span><span class="br0">&#41;</span>;
&nbsp;
            <span style="color: #808080;">//verification que les champs cas origine et cas cloture soient bien numeric</span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span>!<span class="br0">&#40;</span>is_numeric<span class="br0">&#40;</span><span style="color: #339933;">$origine</span><span class="br0">&#41;</span><span class="br0">&#41;</span> ||  !<span class="br0">&#40;</span>is_numeric<span class="br0">&#40;</span><span style="color: #339933;">$cloture</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans un des champs &quot;Cas origine&quot; et/ou &quot;Cas cloture&quot;'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>        
            <span style="color: #808080;">//si cas origine est sup&eacute;rieur &agrave; cas cloture</span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span style="color: #339933;">$origine</span> &gt; <span style="color: #339933;">$cloture</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans un des champs &quot;Cas origine / Cas cloture&quot; le cas d<span style="color: #800000;">\'</span>origine ne peut pas &ecirc;tre sup&eacute;rieur au cas cloture'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>
&nbsp;
            <span style="color: #808080;">//si le champ commentaire est vide</span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span style="color: #0000ff;">empty</span><span class="br0">&#40;</span><span style="color: #339933;">$commentaire</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans le champ &quot;commentaire&quot;, celui-ci ne peut pas &ecirc;tre vide'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>
&nbsp;
            <span style="color: #808080;">//si le champ Type de cas est valide avec verification type de cas/cas cloture</span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span style="color: #339933;">$epidemi</span> !== <span style="color: #FF0000;">&quot;&Eacute;pid&eacute;mie&quot;</span><span class="br0">&#41;</span> &amp;&amp; <span class="br0">&#40;</span><span style="color: #339933;">$epidemi</span> !== <span style="color: #FF0000;">&quot;Cas isol&eacute;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans le champ &quot;Type de cas&quot; en ligne(s) : '</span>. <span style="color: #339933;">$counter</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span style="color: #339933;">$epidemi</span> !== <span style="color: #FF0000;">&quot;&Eacute;pid&eacute;mie&quot;</span><span class="br0">&#41;</span> &amp;&amp; <span class="br0">&#40;</span><span style="color: #339933;">$cloture</span> &gt; <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Le type de cas ne peut pas &ecirc;tre &quot;Cas Isol&eacute;&quot; si le nombre de cas cloture est &gt; 1'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;
            <span class="br0">&#125;</span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span style="color: #339933;">$epidemi</span> !== <span style="color: #FF0000;">&quot;Cas isol&eacute;&quot;</span><span class="br0">&#41;</span> &amp;&amp; <span class="br0">&#40;</span><span style="color: #339933;">$cloture</span> == <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Le type de cas ne peut pas &ecirc;tre &quot;&Eacute;pid&eacute;mie&quot; si le nombre de cas cloture est = 1'</span><span class="br0">&#41;</span>;
&nbsp;
            <span style="color: #808080;">//si le champ Score est valide </span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span style="color: #0000ff;">empty</span><span class="br0">&#40;</span><span style="color: #339933;">$score</span><span class="br0">&#41;</span> || !is_numeric<span class="br0">&#40;</span><span style="color: #339933;">$score</span><span class="br0">&#41;</span> || strlen<span class="br0">&#40;</span><span style="color: #339933;">$score</span><span class="br0">&#41;</span> &gt; <span style="color: #cc66cc;">4</span> || <span style="color: #339933;">$score</span> &gt; <span style="color: #cc66cc;">212</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans le champ &quot;Score&quot;'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>
&nbsp;
            <span style="color: #808080;">//si le champ Type infection est valide</span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span>!<span class="br0">&#40;</span>ctype_alpha<span class="br0">&#40;</span><span style="color: #339933;">$infection</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &amp;&amp; <span style="color: #0000ff;">empty</span><span class="br0">&#40;</span><span style="color: #339933;">$infection</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans le champ &quot;Type infection&quot;'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>
&nbsp;
            <span style="color: #808080;">//si le champ Structure est valide</span>
            <span style="color: #0000ff;">if</span><span class="br0">&#40;</span>!<span class="br0">&#40;</span>ctype_alpha<span class="br0">&#40;</span><span style="color: #339933;">$structure</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &amp;&amp; <span style="color: #0000ff;">empty</span><span class="br0">&#40;</span><span style="color: #339933;">$structure</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'error'</span>,<span style="color: #FF0000;">'Probl&egrave;me de donn&eacute;e dans le champ &quot;Structure&quot;'</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;  
            <span class="br0">&#125;</span>  
&nbsp;
            <span style="color: #339933;">$signal</span>              
                -&gt;setDate<span class="br0">&#40;</span><span style="color: #339933;">$dbdate</span><span class="br0">&#41;</span>
                -&gt;setCasO<span class="br0">&#40;</span><span style="color: #339933;">$origine</span><span class="br0">&#41;</span>
                -&gt;setCasC<span class="br0">&#40;</span><span style="color: #339933;">$cloture</span><span class="br0">&#41;</span>
                -&gt;setCommentaire<span class="br0">&#40;</span><span style="color: #339933;">$commentaire</span><span class="br0">&#41;</span>
                -&gt;setEpidemie<span class="br0">&#40;</span><span style="color: #339933;">$epidemi</span><span class="br0">&#41;</span>
                -&gt;setCapacite<span class="br0">&#40;</span><span style="color: #339933;">$capacite</span><span class="br0">&#41;</span>              
                -&gt;setScore<span class="br0">&#40;</span><span style="color: #339933;">$score</span><span class="br0">&#41;</span>      
                -&gt;setInfection<span class="br0">&#40;</span><span style="color: #339933;">$infection</span><span class="br0">&#41;</span> 
                -&gt;setStructure<span class="br0">&#40;</span><span style="color: #339933;">$structure</span><span class="br0">&#41;</span>
                ;
        <span class="br0">&#125;</span>
/.../
&nbsp;
&nbsp;
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.upload'</span><span class="br0">&#41;</span>;
            <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><a rel="nofollow" href="https://codeshare.io/5DpjRW" target="_blank">https://codeshare.io/5DpjRW</a><br />
Et encore il n'y a pas tout !<br />
<br />
Du coup je cherche à factoriser un peu tout ça... La méthode serait donc de créer une fonction en dehors du foreach et appeller la fonction dans le foreach !<br />
<br />
Etant encore debutant je  fais d'abord des test mais mes test ne marche pas...<br />
<br />
Dans mon code , juste avant le foreach j'écris cette fonction : <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">        <span style="color: #0000ff;">function</span> test<span class="br0">&#40;</span><span style="color: #0080ff;">string</span> <span style="color: #339933;">$truc</span><span class="br0">&#41;</span>: <span style="color: #0080ff;">string</span>
        <span class="br0">&#123;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #FF0000;">&quot;le type est : <span style="color: #800000;">$truc</span>&quot;</span>;
        <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>Et dans mon foreach j'insère cette ligne : <br />
<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">echo</span> test<span class="br0">&#40;</span><span style="color: #339933;">$commentaire</span><span class="br0">&#41;</span>;</span>J’envoie donc le csv en upload, celui-ci est bien flush mais j'ai 0 message echo...<br />
<br />
J'ai essayé en mettant cette ligne ailleurs, en mettant volontairement une mauvaise valeur a un champs dans le CSV, et mettre mon echo dans la condition d'erreur lié à la mauvaise valeur... j'ai aussi essayé avec var_dump.... j'ai rien qui s'affiche !<br />
<br />
Comment je peux faire dans un premier temps pour que ca m'affiche correctement chaque valeur de chaque boucle du csv ? merci !<br />
<br />
Ensuite j'aimerais voir pour reduire mon code le plus possible ! Est ce que finalement l'idée de la fonction est la meilleurs selon vous ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>d3LTa7</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182626/php/bibliotheques-frameworks/symfony/factorisation-code/</guid>
		</item>
		<item>
			<title>Symfony 7.4 upload de fichier</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181723&amp;goto=newpost</link>
			<pubDate>Mon, 26 Jan 2026 07:09:36 GMT</pubDate>
			<description>Bonjour, 
Je suis débutant...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je suis débutant sur symfony et j'aimerais avoir un conseil par rapport à un problème que je n'arrive pas a résoudre.<br />
J'ai deux entités, évènement et document. Elles sont liées par un OneToMany , on peut raccrocher un ou plusieurs documents à un évènement.<br />
Quelle est la meilleure méthode, ou celle qui fonctionne pour rajouter des document au niveau du formulaire de création d'un évènement.<br />
<br />
Merci pour votre aide ...</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>bouineau</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181723/php/bibliotheques-frameworks/symfony/symfony-7-4-upload-fichier/</guid>
		</item>
		<item>
			<title><![CDATA[Envoi d'un fichier via un formulaire]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181328&amp;goto=newpost</link>
			<pubDate>Tue, 06 Jan 2026 09:53:46 GMT</pubDate>
			<description><![CDATA[Bonjour ! 
 
J'essaye de...]]></description>
			<content:encoded><![CDATA[<div>Bonjour !<br />
<br />
J'essaye de faire un système d'upload de fichier, insertion en bdd puis lecture de celui-ci !<br />
<br />
Pour le moment j'arrive à procéder à l’envoi d'un fichier spécifique déjà stocké en dur dans un répertoire du site via une commande ! Maintenant l’étape suivante que j'aimerais réaliser et que le fichier soit choisis par l'utilisateur !<br />
Du coup, j'ai consulté la doc de SF sur les envois de fichier : <a rel="nofollow" href="https://symfony.com/doc/current/controller/upload_file.html" target="_blank">https://symfony.com/doc/current/cont...load_file.html</a> et décider de m'en inspirer !<br />
<br />
Voici mon controller : <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
    <span style="color: #339933;">#[Route('/signalement/upload', name: 'signalement.upload', methods:['GET', 'POST'])]</span>
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> upload<span class="br0">&#40;</span>
        Request <span style="color: #339933;">$request</span>,
        SluggerInterface <span style="color: #339933;">$slugger</span>,
         <span style="color: #339933;">#[Autowire('%kernel.project_dir%/public/uploads/')] string $fileDirectory</span>
    <span class="br0">&#41;</span>  : Response <span class="br0">&#123;</span>
            <span style="color: #339933;">$upload</span> = <span style="color: #0000ff;">new</span> Upload<span class="br0">&#40;</span><span class="br0">&#41;</span>;
            <span style="color: #339933;">$form</span> = <span style="color: #339933;">$this</span>-&gt;createForm<span class="br0">&#40;</span>ImportType::<span style="color: #0000ff;">class</span>, <span style="color: #339933;">$upload</span><span class="br0">&#41;</span>;
            <span style="color: #339933;">$form</span>-&gt;handleRequest<span class="br0">&#40;</span><span style="color: #339933;">$request</span><span class="br0">&#41;</span>;
            <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #339933;">$form</span>-&gt;isSubmitted<span class="br0">&#40;</span><span class="br0">&#41;</span> &amp;&amp; <span style="color: #339933;">$form</span>-&gt;isValid<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span style="color: #339933;">$file</span> = <span style="color: #339933;">$form</span> -&gt; get<span class="br0">&#40;</span><span style="color: #FF0000;">'csvFile'</span><span class="br0">&#41;</span>-&gt;getData<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                <span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span style="color: #339933;">$file</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                    <span style="color: #339933;">$fileName</span> = pathinfo<span class="br0">&#40;</span><span style="color: #339933;">$file</span>-&gt;getClientOriginalName<span class="br0">&#40;</span><span class="br0">&#41;</span>, PATHINFO_FILENAME<span class="br0">&#41;</span>;
                    <span style="color: #339933;">$safeFileName</span> = <span style="color: #339933;">$slugger</span>-&gt;slug<span class="br0">&#40;</span><span style="color: #339933;">$fileName</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$newFileName</span> = <span style="color: #339933;">$safeFileName</span>.<span style="color: #FF0000;">'-'</span>.uniqid<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span style="color: #FF0000;">'.'</span>.<span style="color: #339933;">$file</span>-&gt;guessExtension<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$upload</span>-&gt;setCsvFile<span class="br0">&#40;</span><span style="color: #339933;">$newFileName</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$csv</span> = Reader::createFromPath<span class="br0">&#40;</span><span style="color: #FF0000;">'%kernel.root.dir%/../public/uploads/'</span>.<span style="color: #339933;">$fileName</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$csv</span>-&gt;setHeaderOffset<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$csv</span>-&gt;setDelimiter<span class="br0">&#40;</span><span style="color: #FF0000;">';'</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$csv</span>-&gt;setEscape<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$records</span> = <span style="color: #339933;">$csv</span>-&gt;getRecords<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                    <span style="color: #0000ff;">foreach</span> <span class="br0">&#40;</span><span style="color: #339933;">$records</span> <span style="color: #0000ff;">as</span> <span style="color: #339933;">$record</span><span class="br0">&#41;</span><span class="br0">&#123;</span> 
                        <span style="color: #339933;">$signalement</span> = <span class="br0">&#40;</span><span style="color: #0000ff;">new</span> Signalement<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
                            -&gt;setNumero<span class="br0">&#40;</span><span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Identifiant de la fiche'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
                            <span style="color: #808080;">//etc..</span>
                            ;
                            <span style="color: #339933;">$this</span>-&gt;em-&gt;persist<span class="br0">&#40;</span><span style="color: #339933;">$signalement</span><span class="br0">&#41;</span>;
                    <span class="br0">&#125;</span>                    
                <span class="br0">&#125;</span>
                <span style="color: #339933;">$this</span>-&gt;em-&gt;flush<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                    <span style="color: #339933;">$this</span>-&gt;addFlash<span class="br0">&#40;</span><span style="color: #FF0000;">'success'</span>,<span style="color: #FF0000;">'Bien ajout&eacute; avec succ&egrave;s'</span><span class="br0">&#41;</span>;
                    <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;redirectToRoute<span class="br0">&#40;</span><span style="color: #FF0000;">'signalement.index'</span><span class="br0">&#41;</span>;
            <span class="br0">&#125;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #339933;">$this</span>-&gt;render<span class="br0">&#40;</span><span style="color: #FF0000;">'pages/signalement/upload.html.twig'</span>,
            <span class="br0">&#91;</span><span style="color: #FF0000;">'form'</span> =&gt; <span style="color: #339933;">$form</span>,<span class="br0">&#93;</span><span class="br0">&#41;</span>;
    <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>Première erreur que j'ai, qui est lié à la ligne de l'autowire ! J'avoue avoir un peu copié bêtement le code de la doc avec cette ligne et l'avoir mis à ma sauce... J'ai consulté la doc sur l'Autowire et j'avoue ne pas trop comprendre... P'tet un peu dur vu mon niveau :roll: <br />
Voici l'erreur que je rencontre : <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
Controller <span style="color: #FF0000;">&quot;App<span style="color: #800000;">\C</span>ontroller<span style="color: #800000;">\S</span>ignalementController::upload&quot;</span> requires the <span style="color: #FF0000;">&quot;<span style="color: #800000;">$fileDirectory</span>&quot;</span> argument that could not be resolved. Either the argument is nullable <span style="color: #0000ff;">and</span> no <span style="color: #0080ff;">null</span> value has been provided, no <span style="color: #0000ff;">default</span> value has been provided <span style="color: #0000ff;">or</span> there is a non-optional argument after this one.</pre></td></tr></table></code><hr />
</div>Dans la doc , je n'ai pas trouvé le lien avec cette variable si elle était définie ailleurs etc etc...(à part plus bas dans le try{} mais j'ai essayé aussi avec cette option mais ca ne change rien). Je me demande aussi si l'url était bonne et si je devais avoir un dossier &quot;uploads&quot; dans mon dossier &quot;public&quot;<br />
<br />
J'ai bien évidement tenté sans l'Autowire mais la j'ai une autre erreur qui apparait lors de l'envoi du fichier  : <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
`%kernel.root.dir%/../<span style="color: #0000ff;">public</span>/uploads/test`: failed to open stream: No such file <span style="color: #0000ff;">or</span> directory.</pre></td></tr></table></code><hr />
</div>Bref j'avoue être un peu perdu entre la doc de SF mes tentatives et mes autres recherche sur internet ! Bref je sèche ! Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>d3LTa7</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181328/php/bibliotheques-frameworks/symfony/envoi-d-fichier-via-formulaire/</guid>
		</item>
		<item>
			<title>SF 7.4 et ajax : route non trouvée et parseerror dans le retour</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181170&amp;goto=newpost</link>
			<pubDate>Fri, 26 Dec 2025 15:05:27 GMT</pubDate>
			<description>Bonjour, 
 
Sur mon site en...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Sur mon site en Synfony 7.4.2, je veux rajouter un peu d'ajax pour afficher des valeurs.<br />
Je passe en paramètre un id de réservation, et je veux lire en BDD le nom de la personne et l'afficher.<br />
Je verrai plus tard la lecture en BDD, je veux pour l'instant que l'ajax fonctionne, ce qui n'est pas le cas.<br />
<br />
J'ai réduit mon code au maximum : Le scrip ajax passe un id en paramètre avec la valeur 'toto', et je veux afficher cette valeur dans le success avec un alert. Et ça ne marche pas !<br />
<br />
Problème 1 :<br />
Avec mon code actuel, j'ai toujours une erreur 404 à ma requête ajax. Je le vois dans le profiler.<br />
J'ai fouillé des tonnes des pages sur le web, je ne vois pas ce qui cloche ! Ma route me semble bien définie...<br />
Sur tous mon site, j'ai un prefixe de la locale pour toutes les routes, est ce ça qui pose problème ?<br />
<br />
Problème 2:<br />
A un moment, mon ajax trouvait la route (je ne sais plus ce que j'ai ensuite modifié, et maintenant je tombe toujours sur le problème 1), j'avais un  code 200, mais je tombais toujours dans le alert du error. Et dans la console, je voyais un &quot;parseerror&quot;. Apparemment, je ne renvoie pas du json, mais je ne trouve pas l'erreur non plus.<br />
<br />
Voici mon code :<br />
<br />
routes.yaml<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td valign="top"><pre style="margin: 0">controllers:
    <span style="color: #0080ff;">resource</span>: <span style="color: #FF0000;">'../src/Controller/'</span>
    type: attribute
    prefix: /<span class="br0">&#123;</span>_locale<span class="br0">&#125;</span>
    requirements:
        _locale: <span style="color: #FF0000;">'%app_locales%'</span>
    defaults:
        _locale: <span style="color: #FF0000;">'%locale%'</span>
&nbsp;
site:
    <span style="color: #0080ff;">resource</span>: <span style="color: #FF0000;">'routes/routes_site.yaml'</span>
    prefix:   /<span class="br0">&#123;</span>_locale<span class="br0">&#125;</span>
    requirements:
        _locale: <span style="color: #FF0000;">'%app_locales%'</span>
    defaults:
        _locale: <span style="color: #FF0000;">'%locale%'</span></pre></td></tr></table></code><hr />
</div>routes_site.yaml<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">visit_ajax_post:
    path:      /visit_ajax_post
    defaults:
        _controller: App\Controller\VisitController::visit_ajax_action</pre></td></tr></table></code><hr />
</div>site.js<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td valign="top"><pre style="margin: 0">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.ready<span class="br0">&#40;</span><span style="color: #0000ff;">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span style="color: #0000ff;">var</span> nom;
    $.ajax<span class="br0">&#40;</span><span class="br0">&#123;</span>
        type: <span style="color: #FF0000;">&quot;POST&quot;</span>,
        url: <span style="color: #FF0000;">&quot;{{ path('visit_ajax_post') }}&quot;</span>,
        contentType: <span style="color: #FF0000;">&quot;application/json; charset=utf-8&quot;</span>,
        dataType: <span style="color: #FF0000;">'json'</span>,
        async: <span style="color: #0080ff;">false</span>,
        data: <span class="br0">&#123;</span>id: <span style="color: #FF0000;">'toto'</span><span class="br0">&#125;</span>,
        success: <span style="color: #0000ff;">function</span><span class="br0">&#40;</span>data<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                alert<span class="br0">&#40;</span>data<span class="br0">&#41;</span>;
                nom = data.idreservation;
        <span class="br0">&#125;</span>,
        error: <span style="color: #0000ff;">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            alert<span class="br0">&#40;</span><span style="color: #FF0000;">'erreur visit'</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="br0">&#41;</span>;
    alert<span class="br0">&#40;</span>nom<span class="br0">&#41;</span>;
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div>VisitController.php<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> visit_ajax_action<span class="br0">&#40;</span>Request <span style="color: #339933;">$request</span><span class="br0">&#41;</span>: jsonResponse
<span class="br0">&#123;</span>
	<span style="color: #0000ff;">if</span><span class="br0">&#40;</span><span style="color: #339933;">$request</span>-&gt;isXmlHttpRequest<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span style="color: #339933;">$idReservation</span> = <span style="color: #339933;">$request</span>-&gt;request-&gt;get<span class="br0">&#40;</span><span style="color: #FF0000;">'id'</span><span class="br0">&#41;</span>;
		<span style="color: #339933;">$reponse</span> = <span style="color: #0000ff;">new</span> JsonResponse<span class="br0">&#40;</span><span class="br0">&#91;</span>
			<span style="color: #FF0000;">'data'</span> =&gt; <span style="color: #0000ff;">array</span><span class="br0">&#40;</span><span style="color: #FF0000;">'idreservation'</span> =&gt; <span style="color: #339933;">$idReservation</span><span class="br0">&#41;</span>
		<span class="br0">&#93;</span><span class="br0">&#41;</span>;
		<span style="color: #0000ff;">return</span> <span style="color: #339933;">$reponse</span>;
	<span class="br0">&#125;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> Response<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Ce n'est pas une requ&ecirc;te Ajax&quot;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>Merci d'avance pour votre aide !</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>merou19</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181170/php/bibliotheques-frameworks/symfony/sf-7-4-ajax-route-non-trouvee-parseerror-retour/</guid>
		</item>
		<item>
			<title>Envoi de données en CSV vers une BDD MySQL plus précisément vers un champ en clé étrangère</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181044&amp;goto=newpost</link>
			<pubDate>Fri, 19 Dec 2025 11:14:18 GMT</pubDate>
			<description><![CDATA[Bonjour, 
J'essaye d'envoyé...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
J'essaye d'envoyé un csv vers une bdd et certains champs me pose problèmes car ce sont des champs avec clé étrangère !<br />
j'ai évidement regardé la doc et cherché sur le net mais j'ai toujours des message d'erreurs.<br />
Ce que je cherche à faire : Insérer les données du CSV directement dans la table [Signalement]. Dans ce CSV, j'ai une colonne &quot;Nom de la structure&quot;, ce nom doit faire référence à un [nom] qui est dans la table [Structure] mais pas dans ma table [Signalement], et avec son [nom] j'aimerais identifier son [id] et ainsi récupérer d'autres information par son intermédiaire<br />
Pour bien faire, avant de passer par un système de form pour importer un csv, j'ai commencé ce travail par une commande : <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: black;"><span style="color: #0080ff;">&lt;?php</span></span>
<span style="color: black;"><span style="color: #0000ff;">namespace</span> App\Command;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> App\Entity\Structure;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> DateTimeImmutable;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> League\Csv\Reader;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> App\Entity\Signalement;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> League\Csv\Statement;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> Doctrine\ORM\EntityManagerInterface;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> Symfony\Component\Console\Command\Command;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> Symfony\Component\Console\Style\SymfonyStyle;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> Symfony\Component\Console\Attribute\AsCommand;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> Symfony\Component\Console\Input\InputArgument;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> Symfony\Component\Console\Input\InputInterface;</span>
<span style="color: black;"><span style="color: #0000ff;">use</span> Symfony\Component\Console\Output\OutputInterface;</span>
&nbsp;
<span style="color: black;"><span style="color: #0000ff;">class</span> ImportCSVCommand <span style="color: #0000ff;">extends</span> Command <span class="br0">&#123;</span></span>
<span style="color: black;">    <span style="color: #0000ff;">private</span> <span style="color: #339933;">$em</span>;    </span>
<span style="color: black;">    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> <span style="color: #0080ff;">__construct</span><span class="br0">&#40;</span>EntityManagerInterface <span style="color: #339933;">$em</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span>
<span style="color: black;">        <span style="color: #0080ff;">parent</span>::<span style="color: #0080ff;">__construct</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #339933;">$this</span>-&gt;em = <span style="color: #339933;">$em</span>;</span>
<span style="color: black;">    <span class="br0">&#125;</span></span>
&nbsp;
<span style="color: black;">    <span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">function</span> configure<span class="br0">&#40;</span><span class="br0">&#41;</span>: <span style="color: #0080ff;">void</span> <span class="br0">&#123;</span></span>
<span style="color: black;">        <span style="color: #339933;">$this</span></span>
<span style="color: black;">            -&gt;setName<span class="br0">&#40;</span><span style="color: #FF0000;">'csv:import'</span><span class="br0">&#41;</span></span>
<span style="color: black;">            -&gt;setDescription<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Import CSV in DB&quot;</span><span class="br0">&#41;</span> ;</span>
<span style="color: black;">    <span class="br0">&#125;</span></span>
&nbsp;
<span style="color: black;">    <span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">function</span> execute<span class="br0">&#40;</span>InputInterface <span style="color: #339933;">$input</span>,OutputInterface <span style="color: #339933;">$output</span><span class="br0">&#41;</span>: <span style="color: #0080ff;">int</span> <span class="br0">&#123;</span></span>
<span style="color: black;">        <span style="color: #339933;">$io</span> = <span style="color: #0000ff;">new</span> SymfonyStyle<span class="br0">&#40;</span><span style="color: #339933;">$input</span>, <span style="color: #339933;">$output</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #339933;">$io</span>-&gt;title<span class="br0">&#40;</span><span style="color: #FF0000;">'Import CSV ...'</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #339933;">$csv</span> = Reader::from<span class="br0">&#40;</span><span style="color: #FF0000;">'src/Data/listedeproduit.csv'</span>, <span style="color: #FF0000;">'r'</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #339933;">$csv</span>-&gt;setHeaderOffset<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #339933;">$csv</span>-&gt;setDelimiter<span class="br0">&#40;</span><span style="color: #FF0000;">';'</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #339933;">$csv</span>-&gt;setEscape<span class="br0">&#40;</span><span style="color: #FF0000;">''</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #339933;">$records</span> = <span style="color: #339933;">$csv</span>-&gt;getRecords<span class="br0">&#40;</span><span class="br0">&#41;</span>;</span>
&nbsp;
<span style="color: black;">        <span style="color: #0000ff;">foreach</span> <span class="br0">&#40;</span><span style="color: #339933;">$records</span> <span style="color: #0000ff;">as</span> <span style="color: #339933;">$record</span><span class="br0">&#41;</span><span class="br0">&#123;</span>          </span>
<span style="color: black;">            <span style="color: #339933;">$structure</span> = <span class="br0">&#40;</span><span style="color: #0000ff;">new</span> Structure<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></span>
<span style="color: black;">                 -&gt;setNom<span class="br0">&#40;</span><span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Nom de la structure'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;           </span>
&nbsp;
<span style="color: black;">            <span style="color: #339933;">$signalement</span> = <span class="br0">&#40;</span><span style="color: #0000ff;">new</span> Signalement<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></span>
<span style="color: black;">                -&gt;setNumero<span class="br0">&#40;</span><span style="color: #339933;">$record</span><span class="br0">&#91;</span><span style="color: #FF0000;">'Identifiant de la fiche'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>                </span>
<span style="color: black;">                -&gt;setStructure<span class="br0">&#40;</span><span style="color: #339933;">$structure</span><span class="br0">&#41;</span> ;</span>
<span style="color: black;">                <span style="color: #808080;">//etc...</span></span>
&nbsp;
<span style="color: black;">            <span style="color: #339933;">$this</span>-&gt;em-&gt;persist<span class="br0">&#40;</span><span style="color: #339933;">$signalement</span><span class="br0">&#41;</span>;</span>
&nbsp;
<span style="color: black;">        <span class="br0">&#125;</span></span>
<span style="color: black;">        <span style="color: #339933;">$this</span>-&gt;em-&gt;flush<span class="br0">&#40;</span><span class="br0">&#41;</span>;                </span>
<span style="color: black;">        <span style="color: #339933;">$io</span>-&gt;success<span class="br0">&#40;</span><span style="color: #FF0000;">'Great CSV in DB !'</span><span class="br0">&#41;</span>;</span>
<span style="color: black;">        <span style="color: #0000ff;">return</span> Command::SUCCESS;</span>
<span style="color: black;">    <span class="br0">&#125;</span>    </span>
<span style="color: black;"><span class="br0">&#125;</span></span></pre></td></tr></table></code><hr />
</div>Avec ce code j'avais une première erreur de ce genre : <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
 A <span style="color: #0000ff;">new</span> entity was found through the relationship <span style="color: #FF0000;">'App\Entity\Signalement#structure'</span> that was not configured to cascade persist   
   operations <span style="color: #0000ff;">for</span> entity: <span style="color: #cc66cc;">9</span>. To solve this issue: Either explicitly call EntityManager<span style="color: #339933;">#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={&quot;persist&quot;}).</span></pre></td></tr></table></code><hr />
</div>De ce que j'ai compris c'est parce que l'entity Structure n'était pas persister... ! J'ai donc ajouter<br />
$this-&gt;em-&gt;persist($structure); en dessous de l'autre persist...<br />
Mais a partir de là il me met un autres message d'erreur <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">SQLSTATE<span class="br0">&#91;</span><span style="color: #cc66cc;">23000</span><span class="br0">&#93;</span>: Integrity constraint violation: <span style="color: #cc66cc;">1048</span> Le champ <span style="color: #FF0000;">'finess_g'</span> ne peut &ecirc;tre vide <span class="br0">&#40;</span><span style="color: #0080ff;">null</span><span class="br0">&#41;</span></code><hr />
</div>il concerne un autre champs de Structure mais pas de Signalement dont je ne me sert pas ici... <br />
<br />
Je pense que j'ai pas compris quelques chose ou que je fait mal un truc ! Mais déjà dans un premier temps j'ai l'impression que le (new STructure) n'est pas bon dans le sens ou je n'essaie pas de rentrer une nouvelle structure mais un nouveau signalement et dans ce signalement j'ai une colonne structure_id !<br />
<br />
Voilà ! je sais pas si j'ai été très clair !! Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>d3LTa7</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181044/php/bibliotheques-frameworks/symfony/envoi-donnees-csv-vers-bdd-mysql-plus-precisement-vers-champ-cle-etrangere/</guid>
		</item>
		<item>
			<title>AssetMapper et tarteaucitron</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180474&amp;goto=newpost</link>
			<pubDate>Fri, 14 Nov 2025 15:02:13 GMT</pubDate>
			<description>Bonjour,  
 
Je découvre...</description>
			<content:encoded><![CDATA[<div>Bonjour, <br />
<br />
Je découvre encore le nouveau &quot;AssetMapper&quot; de Symfony. Ca marche bien en général, mais la j'ai des problèmes pour faire fonctionner tarteaucitronjs.<br />
<br />
j'importe tarteaucitron, puis tarteaucitron.conf.js dans app.js.<br />
<br />
au début j'avais un <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Uncaught SyntaxError: The requested module <span style="color: #FF0000;">'/assets/lib/tarteaucitron/tarteaucitron-AJ2q67X.js'</span> doesn<span style="color: #FF0000;">'t provide an export named: '</span>tarteaucitron<span style="color: #FF0000;">'</span></code><hr />
</div>j'ai ajouté un <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">export <span class="br0">&#123;</span> tarteaucitron <span class="br0">&#125;</span>;</code><hr />
</div>à la fin du fichier tarteaucitron.js : Plus d'erreur.<br />
<br />
Par contre quand je rajoute ma config<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">import <span style="color: #FF0000;">'./tarteaucitron.conf.js'</span>;</code><hr />
</div>j'ai juste copié collé la config &quot;exemple&quot; de tarteaucitron, et j'ai cette erreur :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Uncaught TypeError: URL constructor:  is not a valid URL.</code><hr />
</div>Du coup je commence à me demander si on peut utiliser tarteaucitron avec AssetMapper, ou si il vaut mieux l'intégrer de façon plus &quot;classique&quot; ?<br />
<br />
Merci pour vos conseils !</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>zevince</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180474/php/bibliotheques-frameworks/symfony/assetmapper-tarteaucitron/</guid>
		</item>
		<item>
			<title>Creer entité depuis BD existante</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180186&amp;goto=newpost</link>
			<pubDate>Thu, 30 Oct 2025 07:56:40 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je commence à créer ma première app sur Symfony et je voudrais savoir s'il est possible de créer des entités depuis une base de données SQL existante ou s'il est impératif de créer les entités depuis Symfony.<br />
<br />
Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>mabdev</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180186/php/bibliotheques-frameworks/symfony/creer-entite-bd-existante/</guid>
		</item>
		<item>
			<title>erreur quand je fais php bin/console make:migration</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180178&amp;goto=newpost</link>
			<pubDate>Wed, 29 Oct 2025 17:51:02 GMT</pubDate>
			<description>Bonjour, 
php console...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
php console make:entity Contact cela a marché maintenant que ans je fais <br />
php bin/console make:migration il y a cela comme erreur:<br />
In ExceptionConverter.php line 87:<br />
  An exception occurred in the driver: could not find driver  <br />
In Exception.php line 24:<br />
  could not find driver  <br />
In PDOConnect.php line 22:<br />
  could not find driver  <br />
<br />
Pouvez vous m'aider ?<br />
Merci.<br />
Au revoir.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>ldaniele</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180178/php/bibliotheques-frameworks/symfony/erreur-fais-php-bin-console-make-migration/</guid>
		</item>
		<item>
			<title>Utiliser les DTO dans API platform</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179611&amp;goto=newpost</link>
			<pubDate>Thu, 02 Oct 2025 09:35:05 GMT</pubDate>
			<description>Bonjour, 
 
Je développe une...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je développe une application réalisée en (backend) PHP 8.0 /Symfony 5.4 &amp; API Platform 2.6, (frontend) Tauri/Vue.js &amp; Rust. C'est une application desktop légère permettant l'utilisation de différents modules en lien avec une entreprise.<br />
<br />
Je travaille actuellement sur un module regroupant un ensemble d'applications modifiées en fonction de l'identifiant agent, par exemple :<br />
<br />
Identifiant : LISA-020156  <br />
Application liée à Lisa : 48<br />
<br />
<br />
Voici la structure de ma base de données :<br />
<br />
Application : id, name, description, exePath, argument, categorie, isActif, isFavorites<br />
<br />
Favorite : id, idAgent, favApplication, position (pour avoir un ordre de classement des applications favorites)<br />
<br />
Jusqu'ici tout va bien, j'arrive à afficher ma liste des applications selon l'agent, mais je rencontre quelques problèmes dans la gestion des favoris.<br />
La gestion des favoris doit permettre à l'utilisateur d'ajouter et de retirer des applications dans une liste d'applications favorites (INSERT - DELETE).<br />
<br />
Pour ce faire, j'aimerais centraliser le traitement des favoris dans la partie Application grâce à un DTO dans lequel j'ajouterai une propriété booléenne :<br />
<br />
Si vrai, alors l'application est en favoris<br />
<br />
Sinon, elle reste dans la liste des applications.<br />
<br />
Ensuite, je ferai en sorte de gérer la création et la suppression directement depuis le DataPersister, selon l'action sur la liste des applications.<br />
<br />
Pensez-vous que c'est faisable ?<br />
<br />
En vous remerciant,<br />
<br />
Cordialement,<br />
Lasurprise.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>Lasurprise</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179611/php/bibliotheques-frameworks/symfony/utiliser-dto-api-platform/</guid>
		</item>
		<item>
			<title>KnpPaginatorBundle ne fonctionne plus en 7.3.3 ?</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179090&amp;goto=newpost</link>
			<pubDate>Sun, 07 Sep 2025 14:15:33 GMT</pubDate>
			<description>Bonjour à tous, 
 
Après...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Après avoir installé/désinstallé plusieurs fois KnpPaginatorBundle (<a rel="nofollow" href="https://github.com/KnpLabs/KnpPaginatorBundle" target="_blank">https://github.com/KnpLabs/KnpPaginatorBundle</a>) que ce soit dans ou en dehors mon container docker, sa classe n'est plus reconnue malgré la référence au bon use et qu'il soit bien présent dans config\bundles:<br />
<br />
Dans config/bundles il est surligné en rouge indiquant &quot;undefined type&quot; :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::<span style="color: #0000ff;">class</span> =&gt; <span class="br0">&#91;</span><span style="color: #FF0000;">'all'</span> =&gt; <span style="color: #0080ff;">true</span><span class="br0">&#93;</span>,</code><hr />
</div>En injectant le service dans le controller de destination (PaginatorInterface $paginator) il reste souligné aussi en rouge m'indiquant que je n'ai pas déclaré de use alors que c'est fait avec :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><span style="color: #0000ff;">use</span> Knp\Component\Pager\PaginatorInterface;</code><hr />
</div>dans le haut de la classe...<br />
<br />
Dans composer.json il est aussi présent:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><span style="color: #FF0000;">&quot;knplabs/knp-paginator-bundle&quot;</span>: <span style="color: #FF0000;">&quot;*&quot;</span>,</code><hr />
</div>C'est la première fois sur des dizaines de projet que ça m'arrive, on dirait que des paquets manqueraient durant l'installation avec composer ...<br />
<br />
Auriez-vous une idée ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>clickandgo</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179090/php/bibliotheques-frameworks/symfony/knppaginatorbundle-ne-fonctionne-plus-7-3-3-a/</guid>
		</item>
		<item>
			<title>Symfony + docker : Lenteurs inexplicables (+ de 4 min / requête)</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179089&amp;goto=newpost</link>
			<pubDate>Sun, 07 Sep 2025 13:58:05 GMT</pubDate>
			<description>Bonjour à tous, 
 
Tout est...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Tout est dans le titre, mon Symfony dockerisé est d'une lenteur épouvantable, pour chaque requête il y a entre 4 et 5 minutes d'attente, je n'ai jamais eu çà auparavant ...<br />
<br />
Je suis en version 7.3.3 installée dans le dossier .\app<br />
<br />
Je n'ai aucun problème coté Docker, container et images fonctionnent...<br />
<br />
Le vidage de cache même en rentrant dans le bash du container ne change rien...<br />
<br />
Peut être faut-il changer ma config Docker ? (J'ai entendu dire qu'il fallait séparer le dossier vendor, mais comment faire ?)<br />
<br />
Merci d'avance pour votre aide précieuse<br />
<br />
Dockerfile (dans le dossier .\php):<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
FROM php:<span style="color: #cc66cc;">8.2</span>-apache
&nbsp;
RUN apt-get update \
    &amp;&amp; apt-get install -y build-essential curl zlib1g-dev g++ git libicu-dev zip libzip-dev libpng-dev libjpeg-dev libwebp-dev libfreetype6-dev \
    &amp;&amp; docker-php-ext-install intl opcache pdo pdo_mysql \
    &amp;&amp; pecl install apcu \
    &amp;&amp; docker-php-ext-enable apcu \
    &amp;&amp; docker-php-ext-configure zip \
    &amp;&amp; docker-php-ext-install zip
&nbsp;
RUN docker-php-ext-configure gd --with-freetype --with-webp --with-jpeg \
    &amp;&amp; docker-php-ext-install  gd \
    &amp;&amp; docker-php-ext-install exif
&nbsp;
RUN a2enmod rewrite &amp;&amp; a2enmod ssl &amp;&amp; a2enmod socache_shmcb
&nbsp;
WORKDIR /<span style="color: #0000ff;">var</span>/www
&nbsp;
RUN curl -sS https:<span style="color: #808080;">//getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer</span>
&nbsp;
RUN curl -sS https:<span style="color: #808080;">//get.symfony.com/cli/installer | bash</span>
RUN mv /root/.symfony5/bin/symfony /usr/local/bin/symfony
&nbsp;
RUN git config --<span style="color: #0000ff;">global</span> user.email <span style="color: #FF0000;">&quot;bla@bla.fr&quot;</span>
RUN git config --<span style="color: #0000ff;">global</span> user.name <span style="color: #FF0000;">&quot;blabla&quot;</span></pre></td></tr></table></code><hr />
</div>docker-compose.yml (dossier .\)<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
services:
  database:
    container_name: database
    image: mysql:<span style="color: #cc66cc;">8.0</span>
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: jo2024
      MYSQL_USER: jo2024
      MYSQL_PASSWORD: jo2024
    ports:
      - <span style="color: #FF0000;">'4306:3306'</span>
    volumes:
      - ./mysql:/<span style="color: #0000ff;">var</span>/lib/mysql:rw
  php:
    container_name: php
    build:
      context: ./php
    ports:
      - <span style="color: #cc66cc;">8080</span>:<span style="color: #cc66cc;">80</span>     
    volumes:
      - ./apache/<span style="color: #0000ff;">default</span>.conf:/etc/apache2/sites-enabled/000-<span style="color: #0000ff;">default</span>.conf  
      - ./app:/<span style="color: #0000ff;">var</span>/www
    depends_on:
      - database
  phpma:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
      PMA_ARBITRARY: <span style="color: #cc66cc;">1</span>
      PMA_HOST: database
      PMA_USER: root
      PMA_PASSWORD: secret
      UPLOAD_LIMIT: 20M
    ports:
      - <span style="color: #cc66cc;">8899</span>:<span style="color: #cc66cc;">80</span>
  mailhog:
    image: mailhog/mailhog
    logging:
      driver: <span style="color: #FF0000;">'none'</span>
    ports:
      - <span style="color: #cc66cc;">1025</span>:<span style="color: #cc66cc;">1025</span> <span style="color: #339933;">#SMTP</span>
      - <span style="color: #cc66cc;">8025</span>:<span style="color: #cc66cc;">8025</span> <span style="color: #339933;">#Boite mail</span></pre></td></tr></table></code><hr />
</div>Configuration Apache : (.\apache)<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td valign="top"><pre style="margin: 0">&lt;VirtualHost *:<span style="color: #cc66cc;">80</span>&gt;
    DocumentRoot /<span style="color: #0000ff;">var</span>/www/<span style="color: #0000ff;">public</span>
&nbsp;
    &lt;Directory /<span style="color: #0000ff;">var</span>/www/public&gt;
        AllowOverride None
        Order Allow,Deny
        Allow from All
&nbsp;
        &lt;IfModule mod_rewrite.c&gt;
            RewriteEngine On
            RewriteCond %<span class="br0">&#123;</span>REQUEST_FILENAME<span class="br0">&#125;</span> !-f
            RewriteRule ^<span class="br0">&#40;</span>.*<span class="br0">&#41;</span>$ index.php <span class="br0">&#91;</span>QSA,L<span class="br0">&#93;</span>
        &lt;/IfModule&gt;
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;</pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>clickandgo</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179089/php/bibliotheques-frameworks/symfony/symfony-p-docker-lenteurs-inexplicables-p-4-min-requete/</guid>
		</item>
		<item>
			<title>React + ts dans container Docker sous Symfony ?</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178955&amp;goto=newpost</link>
			<pubDate>Mon, 01 Sep 2025 10:06:35 GMT</pubDate>
			<description>Bonjour à tous 
 
Je voudrais...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous<br />
<br />
Je voudrais intégrer React en typescript (avec ou sans vite.js suivant faisabilité) dans mon container Docker fonctionnel qui contient déjà Symfony + php + Apache + phpMyAdmin...<br />
<br />
Le but est d'utiliser React avec API Platform dans Symfony...<br />
<br />
Je sais installer React dans Symfony grâce aux tutos disponibles mais je ne sais pas le faire en l'intégrant au container Docker déjà existant :<br />
<br />
Quelle image est la plus recommandée ?<br />
<br />
Que mettre dans le Dockerfile et docker-compose.yml ?.<br />
<br />
Dans quel dossier installer/pointer l'image de React une fois installée ? (dossier React/assets ?).<br />
<br />
Pouvez-vous m'indiquer la procédure pour éviter les erreurs d'arborescence etc ... ?<br />
<br />
Merci d'avance</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>clickandgo</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178955/php/bibliotheques-frameworks/symfony/react-p-ts-container-docker-sous-symfony/</guid>
		</item>
		<item>
			<title>Composer inaccessible en ssh sur mutualisé OVH</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2178692&amp;goto=newpost</link>
			<pubDate>Tue, 19 Aug 2025 10:52:14 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je tente...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je tente en vain de faire un composer install en ssh dans le répertoire de mon appli Symfony clonée par git.<br />
<br />
J'ai installé composer dans le dossier le plus haut du serveur, le fichier composer.phar est bien présent.<br />
<br />
Je ne peux même pas obtenir la version de composer (php composer --version) , toutes les actions concernant composer sont refusées avec le message : &quot;invalid command&quot;<br />
<br />
J'observe qu'énormément de gens ont le même problème, le blocage vient-il du côté d'OVH ? Il indiquent pourtant la procédure d&quot;installation de composer sur leur site même en mutualisé ...<br />
<br />
Bref c'est désespérant car je ne peux plus avancer dans mon déploiement... Toute suggestion serait la bienvenue<br />
<br />
Merci d'avance</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>clickandgo</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2178692/php/bibliotheques-frameworks/symfony/composer-inaccessible-ssh-mutualise-ovh/</guid>
		</item>
		<item>
			<title>Insertions de plusieurs fichier JS</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176273&amp;goto=newpost</link>
			<pubDate>Fri, 18 Apr 2025 10:16:39 GMT</pubDate>
			<description>Hello ! 
 
Je cherche à...</description>
			<content:encoded><![CDATA[<div>Hello !<br />
<br />
Je cherche à insérer plusieurs fichier JS  local dans mon projet SF ! J'ai évidement cherché sur internet comment faire mais je comprend pas :(  (je débute en SF).<br />
<br />
J'ai créé un dossier &quot;JS&quot; dans le dossier assets et dans le dossier &quot;JS&quot; il y a le fichier testA.js<br />
J'ai aussi créé un fichier testB.js dans le dossier public<br />
<br />
<br />
Voici mon block javascripts dans mon base.html.twig<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
        <span class="br0">&#123;</span>% block javascripts %<span class="br0">&#125;</span>
            <span class="br0">&#123;</span>% block importmap %<span class="br0">&#125;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> importmap<span class="br0">&#40;</span><span style="color: #FF0000;">'app'</span><span class="br0">&#41;</span> <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="br0">&#123;</span>% endblock %<span class="br0">&#125;</span>
            &lt;script src=<span style="color: #FF0000;">&quot;{{asset('JS/testA.js')}}&quot;</span>&gt;<span style="color: #0080ff;">&lt;/script&gt;</span>
            &lt;script src=<span style="color: #FF0000;">&quot;../public/testB.js&quot;</span>&gt;<span style="color: #0080ff;">&lt;/script&gt;</span>
        <span class="br0">&#123;</span>% endblock %<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
Dans la console de mon navigateur, quand j'ouvre ma page qui est dans templates/pages/signalement/show.html.twig<br />
<br />
Dans show.html.twig : <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&lt;div id=<span style="color: #FF0000;">&quot;signalement&quot;</span>&gt;
     &lt;p&gt;ceci est un test&lt;/p&gt;
&lt;/div&gt;</pre></td></tr></table></code><hr />
</div>Il ne me trouve pas testB : Échec du chargement pour l’élément &lt;script&gt; dont la source est « <a rel="nofollow" href="http://localhost:8000/public/testB.js" target="_blank">http://localhost:8000/public/testB.js</a> ».<br />
Il ne me trouve testA j'ai un autre message d'erreur : <br />
<br />
Uncaught ReferenceError: can't access lexical declaration 'signalement' before initialization<br />
    &lt;anonymous&gt; <a rel="nofollow" href="http://localhost:8000/assets/JS/testA-pvpnoMf.js:1" target="_blank">http://localhost:8000/assets/JS/testA-pvpnoMf.js:1</a><br />
<br />
Je comprends pas trop comment intégrer d'autre fichier en plus du app.js dans Symfony !<br />
<br />
Merci de vos lumières :)</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2115/php/bibliotheques-frameworks/symfony/">Symfony</category>
			<dc:creator>d3LTa7</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176273/php/bibliotheques-frameworks/symfony/insertions-plusieurs-fichier-js/</guid>
		</item>
	</channel>
</rss>
