【问题标题】:How can I format PHP files with HTML markup in Visual Studio Code?如何在 Visual Studio Code 中使用 HTML 标记格式化 PHP 文件?
【发布时间】:2017-05-10 21:16:54
【问题描述】:

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

我还尝试了大约五个扩展,但没有一个可以重新格式化。

如何在 Visual Studio Code 中格式化 .blade.php 文件?

【问题讨论】:

  • VS Code 具有开箱即用的 HTML Intellisense,为了使用此插件实现您的目标,请转到主菜单 - 文件/首选项/设置,然后在您的用户设置中添加:“文件.associations": {"*blade.php": "html"} 它适用于任何模板扩展、树枝等。即使不重新启动 VS Code 也可以开始工作。

标签: php laravel visual-studio-code code-formatting


【解决方案1】:

我认为Beautify (by HookyQR) 可能会成功。只需在其配置的 HTML 部分添加“php”和/或“blade.php”即可美化 PHP/Blade 视图文件。

它对我有用!

【讨论】:

  • 回复“'blade.php'”:不应该只是“'blade'”吗?
  • 如果没有对 Blade 文件的直接支持,为什么它比 OP 尝试的其他扩展更好?
【解决方案2】:

扩展名Beautify(来自 HookyQR)做得很好。将 PHP 和任何其他文件扩展名类型添加到配置中。作为said by Nico,举个例子:

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

  2. 在上面的字段中搜索美化。并点击 “在 settings.json 中编辑” 获得 “美化:配置”

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

###用法

您可以直接调用它。按F1,然后输入美化自动完成为您提供了两种选择,“美化文件”“美化选择”选择您需要的,它就可以完成这项工作。这是一种直截了当的直接方式

您也可以添加一个键绑定来获得一个键盘快捷键。操作方法如下:

  1. 打开 keybindings.json(进入菜单 FilePreferencesKeyboard Shortcuts

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

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

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

    选择您想要的任何键,并确保您不会覆盖现有的键。存在与否先在左侧搜索。

请注意,所有这些内容都已在扩展程序的描述中详细记录。

额外:关于刀片的注意事项

(@Peter Mortensen 澄清说明套件)

blade 或blade.php

如果您对设置是blade 还是blade.php 感到困惑!我给你清理掉!这是blade!那是语言的 vscode 关键字!

你怎么知道的?

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

写刀片

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

好吧,但是如何检查!

在设置中尝试blade.php

尝试美化

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

所以它不起作用!

真正了解!放回blade! 而且它会直接工作和美化!

它与刀片的工作情况如何

对此的真棒答案!试试看,自己看看!

但是如果你问我!我会说它确实可以与 html 一起使用!它可能太方便了!你可能需要修复一些线路!取决于您的期望和风格!

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

这里是美化结果:

【讨论】:

  • 这几乎可以正常工作,它认为 PHP 标签正在打开 HTML 标签,并缩进它下面的所有内容
  • 我刚刚添加了“blade”而不是“blade.php”,正如@Sam Dan 建议的那样
  • 铅笔图标,在哪里?
  • @Jonny 事情从那时起发生了变化! vscode 更新了它的设置管理界面!我会更新的!但是你需要做的是CTRL + SHIFT + P > user settings (UI) 然后点击edit on settings.json
  • 文件“settings.json”中的"blade"是否应该是"blade.php"?为什么或为什么不?
【解决方案3】:

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

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

【讨论】:

  • 我添加到我的用户配置"beautify.language": { "js": { "type": [ "javascript", "json", "jsonc" ], "filename": [ " .jshintrc", ".jsbeautifyrc" ] }, "css": [ "css", "scss" ], "html": [ "htm", "html", "blade" ] },
  • 这不是暗示 Blade 文件应该以“.blade”(而不是“.blade.php”)结尾吗?
【解决方案4】:

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

它使用 html.format 的所有原生设置、保存时的格式等。试试扩展名 Format HTML in PHP。我之所以成功,是因为其他所有解决方案都让我烦恼,因为它没有 100% 有效。

【讨论】:

  • 你指的是哪个原生设置?
【解决方案5】:

我发现 this extension 名为 Format HTML in PHP 非常适合我。

【讨论】:

  • 重复上一个答案?
【解决方案6】:

Andrew Schultz mentioned 扩展名:“Format HTML in PHP”。

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

此外。好消息!开发人员已经成功地包含 Laravel Blade.php 文件。与此同时,我通过手动将语言从Blade 切换到 PHP 来格式化 Visual Studio Code 中的 Laravel 刀片文件,然后我使用带有 Ctrl + Alt 的扩展名“Format HTML in PHP” + F 或右键单击。它对我很有用。

【讨论】:

    【解决方案7】:

    这可以通过对 ".blade.php" 使用 HTML 格式来完成:

    1. 打开 Command PaletteCtrl + Shift + P(在 PC 上))
    2. 键入“Preferences:Open Settings (JSON)”(这是为了打开 settings.json
    3. 添加
      "files.associations": {
              "*.blade.php": "html",
              "*.tpl": "html"
      },
      

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

    【讨论】:

    • 为什么* 用于第一项,而不是第二项 (".tpl")?
    【解决方案8】:

    使用 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]
    

    它在屏幕上看起来很棒。

    【讨论】:

      【解决方案9】:

      我在 PHP 中使用 Format HTML,它在包含 HTML 和 PHP 的文件中运行良好。但是,它似乎没有格式化“纯”php 文件,例如 Class。所以我还安装了 Phpfmt,它对纯 php 文件做得很好,但破坏了混合内容文件中的缩进。这是我得到的一个例子:

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

      开始的 php 标记与 html 正确对齐。 '我在'支持的转换'下看到它说:

      AlignPHPCode:   Align PHP code within HTML block.
      

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

      【讨论】:

        猜你喜欢
        • 2017-05-10
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 2021-06-26
        • 1970-01-01
        • 2014-03-11
        • 2019-09-01
        相关资源
        最近更新 更多