Bonjour à tous !

J'ai un soucis sur Symfony 5.4.10 que je n'arrive pas à régler :

Tous mes assets semblent ne pas trouver leur chemin alors que l'affichage se fait correctement en localhost (les css s'appliquent, les images s'affichent, etc.)

Par exemple pour :

    <link rel="stylesheet" href="{{ asset('css/bootstrap.css') }}">
    <link rel="stylesheet" href="{{ asset('css/style.css') }}">
    <script src="{{ asset('js/script-img-fix.js') }}"></script>
    <img src="{{ asset('img/Logo.png') }}" alt="Logo">

Ce que je veux

J'aimerais que mon repertoire public soit correctement localisé pour que mon code s'affiche normalement

Ce que j'obtiens

Tout ce qui est entre les quotes de l'asset 'css/bootstrap.css', 'css/style.css', etc. est surligné en jaune et au survole ça m'affiche "Missing asset"

Je suis totalement novice sur Symfony. J'ai cherché la solution partout et ai tenté toutes les manip trouvées sur divers forum mais rien n'y fait je ne trouve pas ou ne comprends tout simplement pas les manip à faire...

Merci beaucoup de votre aide !!!

32 réponses


popotte
Réponse acceptée

Ahah en dev c'est touujours un petit détail qui casse tout x)

De rien avec plaisir ^^

Hello, pas sûr de comprendre ton problème : tes assets sont bien loadées au rendu de la page, mais ton IDE / éditeur de texte ne comprends pas ces url et t'affiche un warning ?

wanda
Auteur

Salut Glioburd merci de ta réponse !
Oui c'est exactement ça. J'ai trouvé sur quelques forums des personnes qui avaient aussi ce problème mais je ne comprends pas la manip pour corriger le problème.
Par exemple :
https://github.com/Haehnchen/idea-php-symfony2-plugin/issues/1020

Dans ce cas précise au départ quel logiciel tu utilise :D
J'imagine que tu utilise PhpStorm ? Tu as installé le plugin Symfony ?

wanda
Auteur

pardon oui ! je suis sur PhpStorm et plugin Symfony installé of course :)

wanda
Auteur

Salut à tous ! est-ce que quelqu'un peut m'aider ?
Merci beaucoup !

wanda
Auteur

Salut !
Est-ce que quelqu'un comprend mon problème de Missing asset ? veut bien me venir en aide ?
Merci d'avance !

Bonjour wanda.

J'espère que ça t'aidera.
-Tu as bien twig d'installer ?
-Tu peux tenter de faire un "composer install" un package a peux éventuellement ne pas être installé même si il se trouve dans ta config "composer.json"

  • Il t'indique un mauvais chemin, mais quel chemin te propose t-il ?

Le meilleure moyen reste d'utiliser la documentation
https://symfony.com/doc/5.4/templates.html#linking-to-css-javascript-and-image-assets

Hello, si tu places ton curseur au milieux de la partie souslignée en jaune et que tu fait Alt+Entrer, tu as une option pour ajouter un support (enable support for... ou un truc du genre)

wanda
Auteur

Bonjour SiProdZz et popotte merci de vos réponses !

@SiProdZz
Je viens d'essayer avec composer require symfony/asset mais ça n'a pas réglé mon problème après redémarrage de Symfony, mes chemins sont toujours en jaune.
Je précise que tous les chemins sont en jaune : les css, les js, les images et même les ancres.

@popotte
Si je me mets sur mon Missing asset en faisant Alt+Entrer, Symfony me propose d'inspecter l'erreur mais ne suggère pas de réédition du lien comme il le fait d'habitude...

J'ai fait des captures d'écran mais ne sais pas comment vous les montrer.

Je précise aussi qu'en local tout s'affiche sans problème, c'est donc qu'il a bien compris où vont mes liens...!

Ah non ce n'est pas l'option rééditin qui est à rechercher, parce que concrètement ton lien est bon, en gros il fallait une option "enable support for" ou un truc du genre ^^

Alors pour les captures, tu héberges tes images dans un hébergeur d'images, et ensuite tu envoies le lien :p

Tu as quoi comme plugins lié à Symfony? (déjà tu as Symfony, et quoi d'autre?)

Montre nous ton fichier composer.json

wanda
Auteur

Bonjour et 1000 excuses pour ne plus avoir répondu !!!
Je n'ai pas été notifiée de vos retours et ne les avais donc pas vu...

Je ne suis toujours pas parvenue à résoudre mon problème donc voilà mon composer.json :

{
"type": "project",
"license": "proprietary",
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"php": ">=7.2.5",
"ext-ctype": "",
"ext-iconv": "
",
"doctrine/annotations": "^1.0",
"doctrine/doctrine-bundle": "^2.7",
"doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.12",
"phpdocumentor/reflection-docblock": "^5.3",
"phpstan/phpdoc-parser": "^1.6",
"sensio/framework-extra-bundle": "^6.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "^5.4",
"symfony/console": "5.4.",
"symfony/doctrine-messenger": "5.4.
",
"symfony/dotenv": "5.4.",
"symfony/expression-language": "5.4.
",
"symfony/flex": "^1.17|^2",
"symfony/form": "5.4.",
"symfony/framework-bundle": "5.4.
",
"symfony/http-client": "5.4.",
"symfony/intl": "5.4.
",
"symfony/mailer": "5.4.",
"symfony/mime": "5.4.
",
"symfony/monolog-bundle": "^3.0",
"symfony/notifier": "5.4.",
"symfony/process": "5.4.
",
"symfony/property-access": "5.4.",
"symfony/property-info": "5.4.
",
"symfony/proxy-manager-bridge": "5.4.",
"symfony/runtime": "5.4.
",
"symfony/security-bundle": "5.4.",
"symfony/serializer": "5.4.
",
"symfony/string": "5.4.",
"symfony/translation": "5.4.
",
"symfony/twig-bundle": "5.4.",
"symfony/validator": "5.4.
",
"symfony/web-link": "5.4.",
"symfony/yaml": "5.4.
",
"twig/extra-bundle": "^2.12|^3.0",
"twig/twig": "^2.12|^3.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "5.4.",
"symfony/css-selector": "5.4.
",
"symfony/debug-bundle": "5.4.",
"symfony/maker-bundle": "^1.0",
"symfony/phpunit-bridge": "^6.1",
"symfony/stopwatch": "5.4.
",
"symfony/web-profiler-bundle": "5.4."
},
"config": {
"allow-plugins": {
"composer/package-versions-deprecated": true,
"symfony/flex": true,
"symfony/runtime": true
},
"optimize-autoloader": true,
"preferred-install": {
"
": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\Tests\": "tests/"
}
},
"replace": {
"symfony/polyfill-ctype": "",
"symfony/polyfill-iconv": "
",
"symfony/polyfill-php72": ""
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "
"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.4.*"
}
}
}

Un grand merci !!!

wanda
Auteur

@popotte j'ai Symfony et rien d'autre (je suis sur PhpStorm)

Tu as bien ce plugin symfony? https://plugins.jetbrains.com/plugin/7219-symfony-support/

Alors si c'est le cas regardes dans les paramètres de PHPStorm, Settings->PHP->Symfony (n'ouvres pas le menu Symfony mais cliques directement dessus)->Web Directory et places le nom de ton dossier public dans le champ Web Directory :)

wanda
Auteur

Merci de ton retour !

Alors je viens de vérifier et dans mes Préférences j'ai ceci : (je mets une capture d'écran)

wanda
Auteur

wanda
Auteur

apparemment ma capture d'écran ne fonctionne pas : /

wanda
Auteur

et oui j'ai le plugin Symfony :)

wanda
Auteur

Languages & Frameworks > PHP > Symfony

(case cochée) Enable Plugin for this Project

Translation Root Path : app/cache/dev/translations
App Directory : app
Web Directory : web

Download remote files (exp.)
(case non cochée) Enable 5min scheduler (reopen Project after change)

Code Folding (aucune case cochée)
Route (PHP)
Repository Entity (PHP)
Template (PHP)
Route (Twig)
Template (Twig)
Constant (Twig)

Custom Features (case cochée)
Twig Icon Decoration

Okay et ton dossier public c'est bien le dossier web du coup ? (Web Directory : web)

wanda
Auteur

Yes Sire !
Petite précision (dont j'ignore si elle a de l'importance) :
j'ai développé une autre app précédemment et je n'avais pas ce problème de Missing Asset

Merci beaucoup à vous deux pour les informations

wanda
Auteur

Bonjour et euh...pardon mais pas compris.

@cgreenfelder
je suis passée à côté d'une info ?

@popotte
mon dossier public c'est bien le dossier web du coup ?

arf... désolée d'habitude je suis moi longue à la détente !!!

En principe sur Symfony le public c'est le dossier web, sauf si tu as créé toi même un dossier public pour y mettre tes assets :p

Tu as ton projet sur Github?

wanda
Auteur

Merci popotte ! Je n'ai pas changé l'emplacement de mon dossier public ( c'est bien Web Directory : web)
En revanche je n'ai pas mon projet sur Github...!
je suis toujours à la recherche d'une solution pour que mes {{ asset('css/font-awesome.css') }} ne s'affichent plus en jaune : /

Mmmh okay alors autre tentative, si tu ouvres le menu Symfony dans tes paramètres, tu as Twig / Template

Tu auras une liste de variables d'environnements, tu peux voir si tu as celui la:

Namespace: __main__
Path: template
Type: ADD_PATH
Parser: Custom
on: coché

Sinon ajoutes le et dans le menu en recliquant sur Symfony tu cliques sur Clear Index

Ensuite autre solution, peut être que ton projet ne se réindexe pas et il ne prends même pas la peine de revérifier, dans ce cas regardes dans Settings->PHP->Annotations->Cliques sur Schedule Reindex, ça va relancer le procesus d'indexation du projet (ce qui est utilisé pour les mesages) tout en bas de la fenetre tu verra une toute petite barre de chargement qui se lancera, attends la fin du chargement et vois si y a toujours le message d'erreur :)

Bon, c'est un peu le soucis, c'est que le problème peut venir de plusieurs causes possibles ^^'

wanda
Auteur

Bonjour popotte et merci de ta réponse !

Alors dans l'ordre :

  1. J'ai bien la ligne main templates ADD_PATH Internal true
    MAIS :
    Namespace: main
    Path: template
    Type: ADD_PATH
    Parser: Custom --> c'est Internal chez moi (le problème peut-il venir de là ?)
    on: coché
    --> Dois-je modifier la ligne ou ajouter une nouvelle ligne avec le paramètre Custom ?

  2. Lorsque je vais dans Settings->PHP->Annotations-> et que je clique sur Schedule annotation reindex
    Rien ne se passe (aucune petite barre de chargement ne s'affiche)

Encore une fois MERCI BEAUCOUP !!!

De rien :p

Alors le parser tu peux toujours essayer de mettre custom a voir si ça fait qque chose

Après je viens de voir que le dossier publique de Symfony sur certaines version ce n'est pas le dossier web mais le dossier public c'est bine le dossier web que tu as ?

Autre chose à vérifier: tu as placé le CSS directement dans le dossier web ou bien dans le dossier assets/styles? Et dans le dossier publique, il y a bien le dossier build? et si oui il y a bien un manoifest.json dedans?

wanda
Auteur

Bonjour popotte !
J'ai tenté d'ajouter la ligne avec "custom" en paramètre mais ça n'a pas changer quoique ce soit donc je l'ai retirée.

Pour ce qui est de mon Web Directory c'est bien web qui est renseigné.

Et enfin mes dossiers css, js, img et fonts sont tous les 4 dans mon dossier 'public' mais pas de fichier manifest.json dans ce dossier...!
...je ne sais même pas de quoi il s'agit ='/

Ah! tu viens de dire tes dossiers css js et img sont dans le dossier "public" :p

Du coup en web directory il faut remplacer "web" par "public" et ce sera bon, et si non refais un coup de "Schedule Reindex" et ce sera reglé :p

wanda
Auteur

Ouiiiiiiiiiiiiii !!!!!!! super merci beaucoup beaucoup popotte !!!!!!!!!!! C'était ça ! :D
Quelle courge que je suis ! je suis totalement passée à côté...!