2016-02-26 57 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插件在使用远程解释器时会发出警告。 –

相关问题