2016-02-26 176 views
37

我使用PhpStorm來處理Symfony項目。如何在PhpStorm中使用Symfony項目時配置「目錄」

文件>設置>項目...>目錄配置,我纔能有自動完成規定的vendor/目錄作爲資源根並作爲排除的文件夾因爲我想忽略供應商時,在我的項目代碼中執行搜索。

但我的問題是供應商仍然顯示在搜索結果中。

這裏是我當前的配置:

​​

這裏是我試圖避免的情況:從vendor/結果顯示:

enter image description here

這裏是PHP配置:

enter image description here

我可以通過選擇限制搜索範圍=自定義但有時我忘記更改此設置。我正在尋找一些可以在我的不同Symfony2/3項目中使用的設置。

我該如何標記vendor/目錄以允許PhpStorm將其用作資源根目錄並在執行搜索時忽略它?

什麼是Symfony2項目的默認目錄結構的正確配置?這裏有一個Symfony的2.8安裝後的默認目錄與composer create-project symfony/framework-standard-edition symfony-2.8 "~2.8"

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

這是我如何標記在這一刻目錄:

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

注:我安裝的Symfony插件PhpStorm,我不不知道這是否會改變IDE的行爲。

+0

我在賞金郵件中犯了一個錯誤,它應該是*不同的目錄***。 –

回答

33

vendor文件夾不是資源根目錄。資源根目錄是一個文件夾,資源(如圖像和腳本)將由Web服務器提供。

在你的情況下,唯一應該標記爲資源根目錄的文件夾可能是web文件夾,但具有諷刺意味的是,它幾乎是你唯一沒有被選作資源根目錄的文件夾。將web標記爲資源根意味着絕對URL /css/foo.css/images/foo.jpg可以是網絡服務器提供的有效資源;您可能想要從資源根中刪除所有其他文件夾。

排除vendor文件夾是正確的,因爲它不是第一方項目代碼的一部分。爲了使代碼完成適用於第三方代碼,您必須將供應商文件夾添加爲外部庫。這可以通過導航到語言&框架>PHP在選項中並將供應商文件夾指定爲包含路徑。

+0

單擊「[F4]」觸發某些內容的上下文是什麼?它對我沒有幫助。你可以請複製我的問題中顯示的樹離子你的答案,並添加相關的*標記*?它可能對其他用戶有用。 –

+0

如果沒有顯示另一個模式對話框,任何編輯器上下文都可以使用。但是,不同的用戶可能有不同的鍵綁定,因此指定鍵盤快捷鍵可能沒有用處,所以我將刪除它。我不會將你的ascii圖表複製到我的答案中,因爲我認爲這不會帶來任何明確性;文字足夠清晰。 –

+0

爲了獲得最佳的性能和配置,請使用Symfony插件,https://github.com/Haehnchen/idea-php-symfony2-plugin –

0

我使用PhpStorm 10作爲Symfony2的主要IDE。您不需要安裝任何Symfony插件,因爲默認情況下PhpStorm支持Symfony2。

  • 你應該標記您public_html目錄作爲一個資源的根,或任何你有將是公共
  • 來源 - 你的app/目錄
  • 如果你不希望在搜索vendors/做,那是什麼我也排除,你按供應商和頂部的「排除」按鈕。您還想排除tmp/app/cache/目錄
  • 正如您已經知道的那樣,您可以定義範圍並在那裏搜索。

當你排除目錄時,它也有助於性能,因爲PhpStorm沒有索引和在那裏觀看文件,反正你不想要的東西。

至於Symfony2的目錄結構,它非常靈活,我用我自己的。這裏是來自文檔的Symfony 2.8 directory結構。

我排除的文件夾爲:

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

Quolonel Questions's answer有使用意見後,這裏是我的配置作一個總結Symfony2(參見Symfon Y3在這個答案的末尾):

對於自動完成,使用vendor/目錄包含路徑

enter image description here

爲了避免不相關的結果在項目搜索時,該以下目錄已被忽略:

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

enter image description here

這裏是我完整的配置:

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

測試源文件夾是可選的,如果它們被定義的會出現在工具欄上:

enter image description here


隨着default configuration for Symfony3,目錄略有不同:

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

更新:更新我的依賴與composer update後,PhpStorm執行在vendor/目錄搜索,即使這些目錄忽略。解決方法是從中刪除所有vendor/*目錄,包括路徑,並且只保留vendor/目錄,如第一個屏幕截圖所示。

我必須測試是否標誌着所有vendor/*目錄,忽略可以正常工作,並避免使用composer update以後每次重複這一點。

2

另一種選擇,比手動排除vendor,然後再包括在PHP的設置更容易,是在作曲家的設置有關composer.jsoncomposer.phar告訴PhpStorm爲this question舒。

+0

雖然它仍自動將所有供應商路徑添加爲包含我們需要的路徑,但Composer插件在使用遠程解釋器時會發出警告。 –

相關問題