简体   繁体   English

VSCode Prettier 不格式化 PHP

[英]VSCode Prettier not formatting PHP

So I've set up vscode with Prettier, but it will not format.php files.所以我用 Prettier 设置了 vscode,但它不会 format.php 文件。 .html files are working fine with Prettier. .html 文件在 Prettier 中运行良好。 So when I have a.php with HTML code then it will be formatted differently, because I am using Beautify as last option.所以当我有一个带有 HTML 代码的 a.php 时,它的格式会有所不同,因为我使用 Beautify 作为最后一个选项。

How can I make Prettier automatically format.php files and the html code in.php the same as.html files?如何让 Prettier 自动格式化 .php 文件和 .php 中的 html 代码与 .html 文件相同?

settings.json设置.json

{
  "sync.autoDownload": true,
  "sync.autoUpload": true,
  "sync.forceDownload": true,
  "sync.forceUpload": true,
  "workbench.iconTheme": "vscode-icons",
  "sync.gist": "715bf022af486e449cae9313183b9a56",
  "sync.quietSync": true,
  "typescript.updateImportsOnFileMove.enabled": "always",
  "window.zoomLevel": 0,
  "vetur.format.defaultFormatter.js": "vscode-typescript",
  "vetur.format.defaultFormatter.ts": "vscode-typescript",
  "eslint.codeActionsOnSave.mode": "all",
  "workbench.colorTheme": "Atom One Dark",
  "beautify.language": {
    "html": ["php", "blade"]
  },
  // These are all my auto-save configs
  "editor.formatOnSave": true,
  // turn it off for JS and JSX, we will do this via eslint
  "[javascript]": {
    "editor.formatOnSave": false
  },
  "[javascriptreact]": {
    "editor.formatOnSave": false
  },
  // tell the ESLint plugin to run on save
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  },
  // Optional BUT IMPORTANT: If you have the prettier extension enabled for other languages like CSS and HTML, turn it off for JS since we are doing it through Eslint already
  "prettier.disableLanguages": ["javascript", "javascriptreact"],
  "php.validate.executablePath": "C:\\xampp\\php\\php.exe"
}

.eslintrc.json .eslintrc.json

{
  "extends": ["airbnb", "prettier", "prettier/react"],
  "parser": "babel-eslint",
  "parserOptions": {
    "ecmaVersion": 2020,
    // Can I remove these now?
    "ecmaFeatures": {
      "impliedStrict": true,
      "classes": true
    }
  },
  "env": {
    "browser": true,
    "node": true,
    "jquery": true,
    "jest": true
  },
  "rules": {
    "no-debugger": 0,
    "no-alert": 0,
    "no-await-in-loop": 0,
    "no-return-assign": ["error", "except-parens"],
    "no-restricted-syntax": [
      2,
      "ForInStatement",
      "LabeledStatement",
      "WithStatement"
    ],
    "no-unused-vars": [
      1,
      {
        "ignoreSiblings": true,
        "argsIgnorePattern": "res|next|^err"
      }
    ],
    "prefer-const": [
      "error",
      {
        "destructuring": "all"
      }
    ],
    "arrow-body-style": [2, "as-needed"],
    "no-unused-expressions": [
      2,
      {
        "allowTaggedTemplates": true
      }
    ],
    "no-param-reassign": [
      2,
      {
        "props": false
      }
    ],
    "no-console": 0,
    "import/prefer-default-export": 0,
    "import": 0,
    "func-names": 0,
    "space-before-function-paren": 0,
    "comma-dangle": 0,
    "max-len": 0,
    "import/extensions": 0,
    "no-underscore-dangle": 0,
    "consistent-return": 0,
    "react/display-name": 1,
    "react/no-array-index-key": 0,
    "react/react-in-jsx-scope": 0,
    "react/prefer-stateless-function": 0,
    "react/forbid-prop-types": 0,
    "react/no-unescaped-entities": 0,
    "jsx-a11y/accessible-emoji": 0,
    "react/require-default-props": 0,
    "react/jsx-filename-extension": [
      1,
      {
        "extensions": [".js", ".jsx"]
      }
    ],
    "radix": 0,
    "no-shadow": [
      2,
      {
        "hoist": "all",
        "allow": ["resolve", "reject", "done", "next", "err", "error"]
      }
    ],
    "quotes": [
      2,
      "single",
      {
        "avoidEscape": true,
        "allowTemplateLiterals": true
      }
    ],
    "prettier/prettier": [
      "error",
      {
        "trailingComma": "es5",
        "singleQuote": true,
        "printWidth": 80
      }
    ],
    "jsx-a11y/href-no-hash": "off",
    "jsx-a11y/anchor-is-valid": [
      "warn",
      {
        "aspects": ["invalidHref"]
      }
    ],
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn"
  },
  "plugins": ["html", "prettier", "react-hooks"]
}

Core prettier does not support PHP 1 , and thus neither does the plugin for VSCode/VSCodium. Core prettier 不支持 PHP 1 ,因此 VSCode/VSCodium 的插件也不支持。 Luckily the designers of prettier seems to have thought of this and implemented a plugin system 2 .幸运的是,prettier 的设计者似乎已经想到了这一点,并实现了一个插件系统2

According to the prettier-vscode repo, all you need to do to use a plugin is to add it and prettier to your package.json 3根据prettier-vscode 存储库,使用插件所需要做的就是将它添加到package.json 3

So for php support your package.json would need to contain:因此,对于 php 支持,您的 package.json 需要包含:

{
  "devDependencies": {
    "@prettier/plugin-php": "0.14.3",
    "prettier": "2.0.5"
  }
}

Sadly there is no support for.php files with HTML : https://github.com/prettier/plugin-php/issues/845遗憾的是,不支持带有 HTML 的php 文件: https://github.com/prettier/plugin-php/issues/845

run this in VSC terminal, if u alreay have prettier installed在 VSC 终端中运行它,如果你已经安装了更漂亮的

npm install --global prettier @prettier/plugin-php

I managed to format php files with html inside我设法用 html 格式化 php 文件

I faced the same issue, and solved it disabling all my extensions: it happens that this extension我遇到了同样的问题,并解决了它禁用我所有的扩展:碰巧这个扩展

Aura Components for Visual Studio Code用于 Visual Studio Code 的 Aura 组件

was making my php code colors disapear.使我的 PHP 代码颜色消失。 This extension, however, is part of the "official" Salesforce Extension Pack...但是,此扩展是“官方”Salesforce 扩展包的一部分......

DO NOT INSTALL THIS EXTENSION DIRECTLY.不要直接安装此扩展。 Install the complete Salesforce Extension Pack instead.而是安装完整的 Salesforce 扩展包。

If it could help, check your extensions !!如果有帮助,请检查您的扩展!!

Its Work !是工作 !

Prettier for HTML, CSS, and JavaScript files更漂亮的 HTML、CSS 和 JavaScript 文件

change your settings.json改变你的 settings.json

  "editor.defaultFormatter": "esbenp.prettier-vscode",
  // add this code 
  "[php]": {
      "editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
  }

The settings use Intelephense as the formatter for PHP files and use Prettier as the formatter for all other files.这些设置使用 Intelephense 作为 PHP 文件的格式化程序,并使用 Prettier 作为所有其他文件的格式化程序。

Now I use Shift + Alt + F to format the files like everybody else.现在我像其他人一样使用 Shift + Alt + F 来格式化文件。

if you dont know ho to open setting.json lets see: I usually just press [ctrl] + [,] to get to settings and then click the "Open Settings (JSON)" icon that appears in the top right hand corner under the title bar Here's another option... VS Code: How to open settings.json file?如果您不知道如何打开 setting.json 让我们看看:我通常只需按 [ctrl] + [,] 进入设置,然后单击出现在右上角的“打开设置 (JSON)”图标标题栏 这是另一个选项... VS Code:如何打开 settings.json 文件? How can I open Visual Studio Code's 'settings.json' file? 如何打开 Visual Studio Code 的“settings.json”文件?

Was having trouble with this exact issue.在这个确切的问题上遇到了麻烦。 The culprit in my case was a misconfigured setting in the settings.json file (on mac, the settings config file is located in ~/Library/Application Support/Code/User)我的罪魁祸首是 settings.json 文件中的错误配置(在 Mac 上,设置配置文件位于 ~/Library/Application Support/Code/User 中)

The settings.json config file required the correct property "php.validate.executablePath". settings.json 配置文件需要正确的属性“php.validate.executablePath”。 The value to be set to this property may vary depending on the PHP version you're using.要设置为此属性的值可能会因您使用的 PHP 版本而异。

To get the correct path of your PHP executable on a mac, open a new terminal window (Cmd + Spacebar and write terminal) and type which php .要在 Mac 上获取 PHP 可执行文件的正确路径,请打开一个新终端 window(Cmd + 空格键和写入终端)并键入which php The returned value should match the config property value.返回的值应与配置属性值匹配。

settings.json example: settings.json 示例:

{
    // your other settings
    "php.validate.executablePath": "/Applications/MAMP/bin/php/php7.3.8/bin/php"
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM