如何在 Visual Studio 代码中使用 HTML 标记格式化 PHP 文件?

How can I format PHP files with HTML markup in Visual Studio Code?

我正在使用 Laravel,所以所有视图都是 .blade.php 文件。 Visual Studio 由于 PHP 扩展名,代码不会格式化 HTML。我删除了文件名的 "blade" 部分,但它仍然没有正确格式化文件(通过 Alt+Shift+F).

我还尝试了大约五个扩展,但其中 none 个进行了重新格式化。

如何在 Visual Studio 代码中格式化 .blade.php 个文件?

我认为 Beautify(来自 HookyQR)可能会成功。只需将 'php' and/or 'blade.php' 添加到其配置的 HTML 部分即可美化 PHP / Blade 视图文件。

对我有用!

扩展名Beautify (from HookyQR) just does it very well. Either add PHP, and any other file extension type, to the configuration. As said by Nico,这里是一个例子:

  1. 转到用户设置 (Ctrl + Shift + P用户设置 (UI) 或 Ctrl + , (逗号)

  2. 在上面的字段中搜索美化。然后点击 "在 settings.json" 中编辑" for "Beautify: Config".

  3. 对于 "html" 部分,添加 "php""blade".

###用法

您可以直接调用它。按F1,然后写Beautify自动完成给你两个选择,“美化文件”“美化选择”选择您需要的那个,它将完成工作。这是一个直截了当的直接方式

您还可以添加键绑定以获得键盘快捷键。方法如下:

  1. 打开 keybindings.json(转到菜单 文件首选项键盘快捷键)

  2. 点击上面的。打开并编辑文件 keybindings.json

  3. 将以下内容添加到右括号中,[]

    {
           "key": "alt+b",
           "command": "HookyQR.beautify",
           "when": "editorFocus"
    }
    

    选择您想要的任何密钥,并确保您没有覆盖现有密钥。有没有先在左边搜索

请注意,所有这些内容都在扩展说明中有详细记录。

额外:关于 blade

的注释

(@Peter Mortensen 澄清的套件)

blade 或 blade.php

如果你搞不清设置是blade还是blade.php!我会为你清理它!是blade!这是该语言的 vscode 关键字!

你怎么知道的?

首先,如果您打开如下图所示的语言列表:

写入blade

可以看到Laravel Blade (blade)!语言关键字在括号中! blade!

嗯,但是怎么查!

尝试在设置中使用 blade.php

努力美化

你会得到一个询问上下文菜单,询问什么语言(html、css、js)!

所以它不起作用!

要真正知道!放回去blade! 而且会直接工作和美化!

它与 blade

的配合情况如何

这个问题的答案真棒!试试吧,亲眼看看!

但如果你问我!我会说它与 html 一样有效!它可能太方便了!您可能需要修复一些线路!取决于您的期望和风格![=2​​9=]

这里有插图!我故意搞砸了缩进

这里是美化结果:

Beautify(来自HookyQR)确实解决了这个问题!

很多人将"blade.php"和"php"添加到HTML配置中。 Beautify 无法识别并手动选择 HTML 模板。相反,只需将 "blade" 添加到 HTML 配置即可解决所有问题。

如果您想要开箱即用的东西,请在 PHP 文件中添加嵌套格式 HTML 支持 Visual Studio 代码应该已经有了。

它使用 html.format、保存格式等的所有本机设置。试试扩展 Format HTML in PHP。我做到了,因为所有其他解决方案都让我恼火,因为它没有 100% 有效。

我发现 this extension 在 PHP 中称为 Format HTML 对我来说效果很好。

Andrew Schultz mentioned the extension: "Format HTML in PHP".

对于带有 HTML 标记的格式 PHP 文件,这确实是一个很好的扩展。它还格式化 PHP 文件中包含的 JavaScript 代码。

而且。好消息!开发人员已经成功地包含 Laravel blade.php 文件。同时,我通过 Blade to PHP then I use the extension "Format HTML in PHP" 和 Ctrl + [=18 手动切换语言,在 Visual Studio 代码中格式化 Laravel blade 文件=]Alt + F 或右键单击。对我来说效果很好。

这可以通过对 ".blade.php":

使用 HTML 格式来完成
  1. 打开命令面板 (Ctrl + Shift + P(在电脑上))
  2. 输入“Preferences:Open Settings (JSON)”(这是为了打开settings.json)
  3. 添加
    "files.associations": {
            "*.blade.php": "html",
            "*.tpl": "html"
    },
    

这会将 .blade.php 文件格式化为 HTML,但不会删除 Blade 片段。

使用 php 中的一项新功能,vscode 似乎可以漂亮地格式化和突出显示嵌入的 HTML。 (php 7.3,问题发布后发布)添加了所谓的“heredoc”和“neardoc”字符串。它们在这里得到了很好的描述:https://andy-carter.com/blog/what-are-php-heredoc-nowdoc.

基本上,你把你的 HTML 放在这样的地方:

[php code.....]
echo
<<<HTML
   <div>
     <h1>This is a headline</h1>
    <p> this is a paragraph. lorem ipsum lorem ipsum blah black </p>
   </div>
HTML;
[^ don't forget the ;  follow with more php if you want]

它在屏幕上看起来很棒。

我在 PHP 中使用格式 HTML,它在包含 HTML 和 PHP 的文件中运行良好。但是它似乎没有格式化 'pure' php 文件,例如 Class。所以我还安装了 Phpfmt,它在处理纯 php 文件时表现出色,但会破坏包含混合内容的文件中的缩进。这是我得到的示例:

<?php
if (!$logged_in) {
    $login_form = 'data-toggle="modal" data-target="#Modal1"';
    $href = '#';
} else {
    $login_form = '';
    $href = 'members';
}
?>

开头的 php 标签与 html 正确对齐。 '我在 'Supported Transformations' 下看到它说:

AlignPHPCode:   Align PHP code within HTML block.

但是正如您从上面看到的,它对我不起作用。有什么建议吗??