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

2022-08-30 10:16:56

我使用PhpStorm来做一个Symfony项目。

“项目>文件>设置”中...>目录配置中,我将目录定义为资源根以便自动完成,并将目录定义为排除文件夹,因为我希望在项目代码中执行搜索时忽略供应商。vendor/

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

这是我当前的配置:

enter image description here

以下是我试图避免的:结果显示:vendor/

enter image description here

下面是 PHP 配置:

enter image description here

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

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

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/

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


答案 1

该文件夹不是资源根目录。资源根目录是 Web 服务器将从中提供图像和脚本等资源的文件夹。vendor

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

排除该文件夹是正确的,因为它不是第一方项目代码的一部分。为了使代码完成适用于第三方代码,您必须将供应商文件夹添加为外部库。这可以通过导航到选项中的PHP>语言和框架并将供应商文件夹指定为包含路径来完成。vendor


答案 2

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

对于自动完成,请使用“包括路径”中的目录: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


使用 Symfony3 的默认配置,目录略有不同:

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

更新:使用 更新我的依赖关系后,PhpStorm 在目录中执行搜索,即使这些目录被忽略。解决方案是从包含路径中删除所有目录,并仅保留目录,如第一个屏幕截图所示。composer updatevendor/vendor/*vendor/

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


推荐