Laravel 5

Problème d'affichage d'image dans des routes paramétrées

Avatar de PaulsLons
PaulsLons

Bonjour, Je suis débutant en Laravel. J'ai constaté que lorsque je suis sur une page (par exemple : public/home) qui n'a pas de paramètres les images de mon projet s'affichent bien et les fichiers css et autres fonctionnent correctement. Mais dès que je passe sur une page avec des paramètres(par exemple : public/demarcheur/1/edit) les images ne s'affichent plus.

Comment faire pour que les images s'affichent peu importe la page ? Ci-dessous le code de mes pages J'ai crée 3 fichiers : default.blade.php qui est mon fichier Template (je fais un include du fichier style et script) style.blade.php qui contient tous mes fichiers .css script.blade.php qui contient tous mes fichiers .js Tous mes fichiers sont stockés (css et js) sont dans le repertoire public Voici le contenu du fichier default.blade.php

<!-- Fin Affichage Tableau de Bord -->    
<!-- Affichage Contenu -->
        @yield('Contenu','Test 1')
<!-- Fin Affichage Contenu -->
        ============================================ -->

{!! Html::style('css/google-roboto.css') !!} {!! Html::style('css/google-material.css') !!}

{!! Html::style('css/style.css') !!}

{!! Html::style('plugins/bootstrap/css/bootstrap.css') !!}

{!! Html::style('plugins/node-waves/waves.css') !!}

{!! Html::style('plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css') !!}

{!! Html::style('plugins/dropzone/dropzone.css') !!}

{!! Html::style('plugins/multi-select/css/multi-select.css') !!}

{!! Html::style('plugins/bootstrap-material-datetimepicker/css/bootstrap-material-datetimepicker.css') !!}

{!! Html::style('plugins/jquery-spinner/css/bootstrap-spinner.css') !!}

{!! Html::style('plugins/bootstrap-tagsinput/bootstrap-tagsinput.css') !!}

{!! Html::style('plugins/bootstrap-select/css/bootstrap-select.css') !!}

{!! Html::style('plugins/nouislider/nouislider.min.css') !!}

{!! Html::style('plugins/animate-css/animate.css') !!}

{!! Html::style('plugins/morrisjs/morris.css') !!}

{!! Html::style('css/themes/all-themes.css') !!} {!! Html::style('plugins/jquery-datatable/skin/bootstrap/css/dataTables.bootstrap.css') !!} Exemple de la page index_demarcheur (Sur cette page l'image s'affiche)

 <label for="NumeroPiece">Numéro Pièce Identité</label>
                <div class="form-group">
                    <div class="form-line {!! $errors->has('NumeroPiece') ? 'has-error' : '' !!}">
                        {!! Form::text('NumeroPiece', null, ['class' => 'form-control', 'placeholder' => 'Entrer le numéro de la pièce']) !!}
                        {!! $errors->first('NumeroPiece', '<label style="color : #761c19">:message</label>') !!}
                    </div>
                </div>
                <label for="Telephone">Téléphone</label>
                <div class="form-group">
                    <div class="form-line {!! $errors->has('Telephone') ? 'has-error' : '' !!}">
                        {!! Form::text('Telephone', null, ['class' => 'form-control', 'placeholder' => 'Entrer le téléphone']) !!}
                        {!! $errors->first('Telephone', '<label style="color : #761c19">:message</label>') !!}
                    </div>
                </div>
               
                <button type="submit" class="btn btn-primary m-t-15 waves-effect">Valider</button> 
            {!! Form::close() !!}
        </div>
    </div>
</div>

Merci d'avance pour votre aide.

Posté il y a 6 mois
Avatar de bestmomo
bestmomo

Salut,

Dans le code que tu montres je ne vois pas de ligne correspondant à l'affichage d'une image, je pense que tu dois donner une adresse relative inadaptée. Avec Laravel on a les helpers asset et url pour créer le chemin sans souci. Une autre approche consiste à ramener à la racine :

<img src="/images/coucou.png" > 

Certains aussi utilisent la balise <base> mais c'est parfois un peu piégeant.

D'autre part tu devrais regrouper tes fichiers CSS en un seul avec mix. Avec ton code il y a une avalanche de requêtes au serveur.

Posté il y a 6 mois
Avatar de PaulsLons
PaulsLons

Bonjour @bestmomo, Merci pour votre réponse. Voici le code pour l'image

Posté il y a 6 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut!

Je pense que c'est lié à la façon dont tu heberge ton code. Tu parle du dossier public, tu passerais pas par WAMP (ou autre) par hasard ? Si oui tu peux essayer de mettre ton image en src="/public/images/user.png" plutot.

C'est peut-être pas du tout ça mais j'ouvre cette piste...

Ps: attention ce site utilise blade, donc ton code est interprété. Il faut intentionnellement mettre une mauvaise syntaxe.

Posté il y a 6 mois
Avatar de PaulsLons
PaulsLons

Merci à tous. En mettant ce code src="URL::asset('images/user.png')" dans ma balise img. Il affiche maintenant l'image dans n'importe quelle page. J'ai maintenant une autre préoccupation : @bestmomo m'a conseillé de regrouper mes fichiers CSS en un seul avec mix, étant débutant en Laravel j'ai du mal à comprendre. Je peux avoir un exemple svp

Posté il y a 6 mois
Avatar de bestmomo
bestmomo

Pour mix de façon générale la documention est bien faite, dans mon cours j'en parle aussi dans cet article. On utilise node.js avec npm pour charger et organiser les librairies plutôt que d'aller les chercher une par une et les copier dans des dossiers.

Posté il y a 6 mois

Vous ne pouvez pas répondre à ce sujet.