如何配置";目录“;在PhpStorm中使用Symfony项目时

如何配置";目录“;在PhpStorm中使用Symfony项目时,php,phpstorm,symfony,Php,Phpstorm,Symfony,我使用PhpStorm处理Symfony项目 在文件>设置>项目…>目录配置中,我将供应商/目录定义为一个资源根目录,以便自动完成,并将其定义为一个排除的文件夹,因为在项目代码中执行搜索时,我想忽略供应商 但我的问题是,搜索结果中仍然会显示供应商 以下是我当前的配置: .idea [excluded] app/ ├ cache [excluded] └ logs [excluded] src/

我使用PhpStorm处理Symfony项目

在文件>设置>项目…>目录配置中,我将
供应商/
目录定义为一个资源根目录,以便自动完成,并将其定义为一个排除的文件夹,因为在项目代码中执行搜索时,我想忽略供应商

但我的问题是,搜索结果中仍然会显示供应商

以下是我当前的配置:

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

以下是我试图避免的:来自
vendor/
的结果如下所示:

以下是PHP配置:

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

我可以通过选择Scope=Custom来限制搜索,但有时我会忘记更改它。我正在寻找一些可以在不同的Symfony2/3项目中使用的设置

我应该如何标记
vendor/
目录,以允许PhpStorm将其用作资源根目录,并在执行搜索时忽略它

Symfony2项目的默认目录结构的正确配置是什么?以下是使用
composer create project Symfony/framework标准版Symfony-2.8“~2.8”
安装Symfony 2.8后的默认目录:

下面是我现在如何标记目录的:

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

注意:我为PhpStorm安装了Symfony插件,我不知道这是否会改变IDE的行为。

供应商的文件夹不是资源根目录。资源根目录是一个文件夹,web服务器将在其中提供图像和脚本等资源

在您的情况下,唯一应该标记为资源根目录的文件夹可能是
web
文件夹,但具有讽刺意味的是,它几乎是您唯一没有选择作为资源根目录的文件夹。将
web
标记为资源根表示绝对URL
/css/foo.css
/images/foo.jpg
可以是web服务器提供的有效资源;您可能希望从资源根目录中删除所有其他文件夹


排除
供应商
文件夹是正确的,因为它不是第一方项目代码的一部分。为了使代码完成对第三方代码有效,必须将供应商文件夹添加为外部库。这可以通过导航到选项中的Languages&Frameworks>PHP并将供应商文件夹指定为包含路径来实现。

我使用PhpStorm 10作为Symfony2的主IDE。您不需要安装任何Symfony插件,因为PhpStorm默认支持Symfony2

  • 您应该将您的
    public\u html
    目录标记为资源根目录,或者任何您拥有的将成为公共目录的目录
  • 来源-您的
    应用程序/
    目录
  • 如果您不想在搜索中使用
    vendors/
    ,这也是我排除的内容,请按vendor并按顶部的“Excluded”按钮。您还希望排除、
    tmp/
    app/cache/
    目录
  • 正如您已经知道的,您可以在那里定义范围和搜索
当您排除目录时,它也有助于提高性能,因为PhpStorm不会索引和监视那里的文件,这是您无论如何都不想要的

至于Symfony2的目录结构,它非常灵活,我使用我自己的。以下是文档中的结构

为我排除的文件夹包括:

  • app/doctrinMigrations
  • app/cache
  • app/logs/
  • tmp/

在使用了来自的建议后,以下是我对Symfony2的配置摘要(请参阅本答案末尾的Symfony3):

要自动完成,请使用Include路径中的
vendor/
目录:

为了避免在项目中搜索时出现不相关的结果,必须忽略以下目录:

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

以下是我的完整配置:

.idea               [excluded]
app/
  ├ cache           [excluded]
  └ logs            [excluded]
src/                [source]
  └ AppBundle/
    └ */Tests/      [test source folders]
vendor/             [excluded]
web/                [resources root]
测试源文件夹是可选的,如果已定义,则将显示在工具栏中:


对于,目录略有不同:

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

更新:使用
composer Update
更新我的依赖项后,PhpStorm在
供应商/
目录中执行搜索,即使这些目录被忽略。解决方案是从Include path中删除所有
vendor/*
目录,并仅保留
vendor/
目录,如第一个屏幕截图所示


我必须测试将所有
vendor/*
目录标记为忽略是否可行,并避免在每次使用
composer update
后重复此操作。

另一个选项比手动排除
vendor
然后在php设置中再次包含它更简单,是告诉PhpStorm有关中所示的composer设置中的
composer.json
composer.phar

我在赏金消息中犯了一个错误,应该是不同的目录。单击
[F4]
触发事件的上下文是什么?这对我没什么用。你能把我的问题中的树复制到你的答案上并加上相应的分数吗?它可能对其他用户有用。如果没有其他模式对话框显示,任何编辑器上下文都可以工作。但是,不同的用户可能有不同的键绑定,所以指定键盘快捷键可能没有多大用处,所以我将删除它。我不会把你的ascii图复制到我的答案中,因为我认为这不会带来任何清晰;文本足够清晰。为了获得最佳性能和配置,请使用Symfony插件,以下两者之间有什么区别:
未将供应商文件夹排除在外
将其排除在外,以及将其放在“语言与框架>PHP包含路径”中
。对单词研究有影响吗?在我的例子中,我有vendor/在排除的文件夹中,vendor/twig/twig在Languages>PHP>Include path中,但我仍然没有twig类的自动完成。到底出了什么问题?当它仍然自动