2016-02-26 10 views
37

Uso PhpStorm per lavorare su un progetto Symfony.Come configurare "Directory" quando si utilizza un progetto Symfony in PhpStorm

Nel File> Impostazioni> Progetto ...> Directory configurazione, ho definito la directory vendor/ come una radice risorsa al fine di avere l'auto-completamento e come una cartella Esclusa perché voglio ignorare i venditori quando eseguendo una ricerca nel codice del mio progetto.

Ma il mio problema è che i fornitori sono ancora visualizzati nei risultati di ricerca.

Qui è la mia configurazione attuale:

enter image description here

Ecco quello che sto cercando di evitare: i risultati di vendor/ sono mostrati:

enter image description here

Ecco la configurazione di PHP:

enter image description here

Posso limitare la ricerca selezionando Ambito = personalizzato ma a volte mi dimentico di cambiare questo. Sto cercando alcune impostazioni che posso usare nei miei diversi progetti Symfony2/3.

Come devo contrassegnare la directory vendor/ per consentire a PhpStorm di utilizzarlo come una risorsa root e ignorarlo quando si esegue una ricerca?

E qual è la configurazione corretta per la struttura delle directory di default di un progetto Symfony2? Qui ci sono le directory predefinite dopo un 2,8 installazione Symfony con composer create-project symfony/framework-standard-edition symfony-2.8 "~2.8":

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

Ecco come ho segnato le directory in questo momento:

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

Nota: ho installato il plugin di Symfony per PhpStorm, I don so se questo cambia il comportamento dell'IDE.

+0

Ho fatto un errore nel messaggio di taglie, dovrebbe essere * le diverse ** directory ***. –

risposta

33

La cartella vendor non è una risorsa root. Una root di risorse è una cartella in cui le risorse come immagini e script saranno servite dal server web.

Nel tuo caso l'unica cartella che dovrebbe essere contrassegnata come una risorsa root è probabilmente la cartella web, ma ironicamente, è quasi l'unica che non hai selezionato come risorsa root. Contrassegnare web come radice della risorsa significa che gli URL assoluti /css/foo.css e /images/foo.jpg potrebbero essere risorse valide servite dal server Web; probabilmente vuoi rimuovere tutte le altre cartelle dalle root delle risorse.

È corretto escludere la cartella vendor perché non fa parte del codice del progetto della prima parte. Affinché il completamento del codice funzioni per il codice di terze parti, è necessario aggiungere la cartella del fornitore come libreria esterna. Questo può essere fatto navigando a Lingue Framework>PHP nelle opzioni e specificando la cartella del fornitore come percorso di inclusione.

+0

Qual è il contesto in cui il clic su '[F4]' fa scattare qualcosa? Non fa niente per me. Potete per favore copiare l'albero mostrato nella mia domanda sulla risposta e aggiungere i relativi * marchi *? Potrebbe essere utile per altri utenti. –

+0

Qualsiasi contesto di editor funzionerà se non viene visualizzato un altro dialogo modale.Tuttavia, diversi utenti potrebbero avere associazioni di tasti diverse, quindi probabilmente non è così utile specificare le scorciatoie da tastiera, quindi lo rimuoverò. Non sto copiando il tuo diagramma ascii nella mia risposta perché non credo che ciò porti alcuna chiarezza; il testo è abbastanza chiaro. –

+0

Per prestazioni e configurazione ottimali, utilizzare il plug-in Symfony, https://github.com/Haehnchen/idea-php-symfony2-plugin –

0

Uso PhpStorm 10 come IDE principale per Symfony2. Non è necessario installare alcun plugin Symfony, perché PhpStorm supporta Symfony2 per impostazione predefinita.

  • tuo dovrebbe contrassegnare la public_html directory come una directory principale risorsa, o qualsiasi altra cosa che avete che sta per essere pubblico
  • fonti - il tuo app/ elenco
  • Se non si desidera vendors/ alla ricerca, questo è ciò che Escludo anche, si preme sul venditore e il pulsante "Escluso" in alto. Vuoi anche escludere, tmp/ e app/cache/ directory
  • Come già sai, puoi definire lo scope e cercare lì.

Quando si esclude la directory, è utile anche le prestazioni dal momento che PhpStorm non esegue l'indicizzazione e la visualizzazione di file lì, qualcosa che non si desidera comunque.

Come per la struttura di directory di Symfony2, è piuttosto flessibile, io uso il mio. Ecco la struttura Symfony 2.8 directory dai documenti.

cartelle esclusi per me sono:

  • app/DoctrineMigrations
  • app/cache
  • app/logs/
  • tmp/
20

Dopo aver consigli utilizzati da Quolonel Questions's answer, ecco un riassunto della mia configurazione per Symfony2 (vedi Symfon Y3 alla fine di questa risposta):

Per il completamento automatico, utilizzare la directory vendor/ in Calcola percorso:

enter image description here

Al fine di evitare risultati irrilevanti durante la ricerca nel progetto, il seguenti directory devono essere ignorato:

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

enter image description here

Qui è la mia configurazione completa:

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

prova cartelle Fonte sono opzionali, se vengono definiti il ​​apparirà nella barra degli strumenti:

enter image description here


Con il default configuration for Symfony3, le directory sono leggermente diverse:

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

Aggiornamento: dopo aver aggiornato le mie dipendenze con composer update, PhpStorm effettuare ricerche nella directory vendor/, anche se queste directory sono ignorato. La soluzione è rimuovere tutte le directory vendor/* da Includere il percorso e mantenere solo la directory vendor/, come nel primo screenshot.

dovrò verificare se marcando tutti i vendor/* directory come ignorato può lavorare ed evitare di ripetere questo dopo ogni volta che composer update viene utilizzato.

2

Un'altra opzione che è più facile di quanto escluso manualmente vendor e poi compresi nuovamente nelle impostazioni php, è quello di raccontare PhpStorm su composer.json e composer.phar nelle impostazioni del compositore come showin in this question.

+0

Mentre ancora aggiunge automaticamente tutti i percorsi del fornitore come percorsi di inclusione come vogliamo qui, il plugin del compositore dà un avvertimento quando si utilizza un interprete remoto. –

Problemi correlati