web-dev-qa-db-fra.com

Comment configurer les "répertoires" lors de l'utilisation d'un projet Symfony dans PhpStorm

J'utilise PhpStorm pour travailler sur un projet Symfony.

Dans la configuration Fichier> Paramètres> Projet…> Répertoires , j'ai défini le vendor/ répertoire en tant que racine de ressource afin d'avoir l'auto-complétion et en tant que dossier exclu parce que je veux ignorer les fournisseurs lors d'une recherche dans le code de mon projet.

Mais mon problème est que les fournisseurs sont toujours affichés dans les résultats de recherche.

Voici ma configuration actuelle:

enter image description here

Voici ce que j'essaie d'éviter: les résultats de vendor/ sont indiqués:

enter image description here

Voici la configuration PHP:

enter image description here

Je peux restreindre la recherche en sélectionnant Portée = Personnalisé mais parfois j'oublie de changer cela. Je recherche des paramètres que je peux utiliser dans mes différents projets Symfony2/3.

Comment dois-je marquer le vendor/ répertoire afin de permettre à PhpStorm de l'utiliser comme racine de ressource et de l'ignorer lors d'une recherche?

Et quelle est la configuration correcte pour la structure de répertoires par défaut d'un projet Symfony2? Voici les répertoires par défaut après une installation de Symfony 2.8 avec composer create-project symfony/framework-standard-edition symfony-2.8 "~2.8":

app/
  ├ config
  ├ cache
  ├ logs
  └ Resources
src/
  └ AppBundle/
vendor/
web/

Voici comment j'ai marqué les répertoires en ce moment:

.idea               [excluded]
app/
  ├ config
  ├ cache           [excluded]
  ├ logs            [excluded]
  └ Resources
src/                [source]
  └ AppBundle/
    └ Tests/        [test source folders]
vendor/             [excluded]
web/

Remarque: J'ai installé le plugin Symfony pour PhpStorm, je ne sais pas si cela modifie le comportement IDE.

45
A.L

Le dossier vendor n'est pas une racine de ressource. Une racine de ressource est un dossier dans lequel des ressources telles que des images et des scripts seront servies par le serveur Web.

Dans votre cas, le seul dossier qui doit être marqué comme racine de ressource est probablement le dossier web, mais ironiquement, c'est presque le seul que vous n'avez pas sélectionné comme racine de ressource. Marquer web comme racine de la ressource signifie que les URL absolues /css/foo.css et /images/foo.jpg pourrait être des ressources valides servies par le serveur Web; vous souhaitez probablement supprimer tous les autres dossiers des racines de ressources.

Il est correct d'exclure le dossier vendor car il ne fait pas partie de votre code de projet propriétaire. Pour que la complétion de code fonctionne avec du code tiers, vous devez ajouter le dossier du fournisseur en tant que bibliothèque externe. Pour ce faire, accédez à Langues et cadres> PHP dans les options et spécifiez le dossier du fournisseur comme chemin d'inclusion.

48
Quolonel Questions

Après avoir utilisé les conseils de réponse aux questions de Quolonel , voici un résumé de ma configuration pour Symfony2 (voir Symfony3 à la fin de cette réponse):

Pour la saisie semi-automatique, utilisez le vendor/ répertoire dans Inclure le chemin :

enter image description here

Afin d'éviter des résultats non pertinents lors de la recherche dans le projet, les répertoires suivants doivent être ignorés:

.idea               [excluded]
app/
  ├ cache           [excluded]
  └ logs            [excluded]
vendor/             [excluded]

enter image description here

Voici ma configuration complète:

.idea               [excluded]
app/
  ├ cache           [excluded]
  └ logs            [excluded]
src/                [source]
  └ AppBundle/
    └ */Tests/      [test source folders]
vendor/             [excluded]
web/                [resources root]

Les dossiers de source de test sont facultatifs, s'ils sont définis, ils apparaîtront dans la barre d'outils:

enter image description here


Avec configuration par défaut pour Symfony , les répertoires sont légèrement différents:

.idea               [excluded]
src/                [source]
tests/              [test source folders]
var/
  ├ cache           [excluded]
  └ logs            [excluded]
vendor/             [excluded]
web/                [resources root]

Mise à jour: après la mise à jour de mes dépendances avec composer update, PhpStorm effectue des recherches dans le vendor/ répertoire, même si ces répertoires sont ignorés . La solution consiste à supprimer tous les vendor/* répertoires de Inclure le chemin et ne conserver que vendor/ répertoire, comme sur la première capture d'écran.

Je vais devoir tester si marquer tous les vendor/* les répertoires ignorés peuvent fonctionner et éviter de les répéter après chaque fois composer update est utilisé.

22
A.L

Une autre option qui est plus facile que d'exclure manuellement vendor puis de l'inclure à nouveau dans les paramètres php, est de parler à PhpStorm de composer.json et composer.phar dans les paramètres composer comme indiqué dans cette question .

3
Yep_It's_Me