A.L*_*A.L 45 php symfony phpstorm
我使用PhpStorm来处理Symfony项目.
在文件>设置>项目...>目录配置中,我将vendor/目录定义为资源根目录以便自动完成,并将其定义为Excluded文件夹,因为我想在项目代码中执行搜索时忽略供应商.
但我的问题是供应商仍然出现在搜索结果中.
这是我目前的配置:
这是我要避免的:结果vendor/显示:
这是PHP配置:
我可以通过选择Scope = Custom来限制搜索,但有时我忘记更改它.我正在寻找一些我可以在不同的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/
Run Code Online (Sandbox Code Playgroud)
这是我在这个时刻标记目录的方式:
.idea [excluded]
app/
? config
? cache [excluded]
? logs [excluded]
? Resources
src/ [source]
? AppBundle/
? Tests/ [test source folders]
vendor/ [excluded]
web/
Run Code Online (Sandbox Code Playgroud)
注意:我为PhpStorm安装了Symfony插件,我不知道这是否会改变IDE的行为.
Quo*_*ons 48
该vendor文件夹不是资源根目录.资源根是一个文件夹,其中Web服务器将提供诸如图像和脚本之类的资源.
在您的情况下,唯一应该标记为资源根目录的web文件夹可能是文件夹,但具有讽刺意味的是,几乎是唯一一个未选择作为资源根目录的文件夹.标记web为资源根意味着绝对URL /css/foo.css并且/images/foo.jpg可以是Web服务器所服务的有效资源; 您可能想要从资源根目录中删除所有其他文件夹.
排除该vendor文件夹是正确的,因为它不是您的第一方项目代码的一部分.为了使代码完成能够用于第三方代码,您必须将vendor文件夹添加为外部库.这可以通过在选项中导航到Languages&Frameworks > PHP并将vendor文件夹指定为包含路径来完成.
A.L*_*A.L 22
在使用了Quolonel Questions的答案之后,这里是我对Symfony2的配置的总结(请参阅本答案末尾的Symfony3):
对于自动完成,请使用包含路径中的vendor/目录:
为了避免在项目中搜索时出现不相关的结果,必须忽略以下目录:
.idea [excluded]
app/
? cache [excluded]
? logs [excluded]
vendor/ [excluded]
Run Code Online (Sandbox Code Playgroud)
这是我的完整配置:
.idea [excluded]
app/
? cache [excluded]
? logs [excluded]
src/ [source]
? AppBundle/
? */Tests/ [test source folders]
vendor/ [excluded]
web/ [resources root]
Run Code Online (Sandbox Code Playgroud)
测试源文件夹是可选的,如果定义它们将出现在工具栏中:
.idea [excluded]
src/ [source]
tests/ [test source folders]
var/
? cache [excluded]
? logs [excluded]
vendor/ [excluded]
web/ [resources root]
Run Code Online (Sandbox Code Playgroud)
更新:更新我的依赖项后composer update,PhpStorm会在vendor/目录中执行搜索,即使这些目录被忽略.解决方案是vendor/*从包含路径中删除所有目录并保留仅vendor/目录,如第一个屏幕截图所示.
我必须测试是否将所有vendor/*目录标记为忽略可以工作,并避免在每次composer update使用后重复此操作.