PhpStorm 显示“属性值未关闭”错误

问题描述

我正在使用 Blade 语法和 Laravel 资产链接在刀片 @section添加一个 JS 文件,但 PHPStorm 将其标记为“属性值未关闭”,并在下面显示的位置使用红色波浪线。它不识别 'src' 元素已关闭,因此代码着色也是错误的。

<script type='text/javascript' src='{{ asset("js/dashboard.js") }}'></script>
                                    ~                                        ~ 

我知道我可以在设置中关闭错误检查,但是代码颜色仍然是错误的,所以不能解决问题。

enter image description here

解决方法

自 2020.2 起,PhpStorm 将 JavaScript 语言注入具有 javascript 名称的 Blade 部分,并将 CSS 注入到 css 部分。

基本上:@section('javascript) 和结束 @endsection 之间的所有内容都被视为 JavaScript。与 CSS 类似。当用户想要编写纯 JS 或 CSS 时,这是该部分的常用名称。如您所知,<script> 标记是 HTML 而不是实际的 JavaScript,因此会出现错误。

它是根据用户需求完成的(如果我没记错的话,WI-29254)并且其他支持的模板系统也存在类似的东西:Twig 和 Smarty。

有两种方法可以解决此问题:

  1. 推荐 -- 只需为这些部分使用更合适的名称:scriptsstyles 并在编写实际 JS 时使用 javascript(如如果您已经在 <script> 标签内)。

    由于这样的块名称在很多项目中经常使用,所以以后当你使用别人的代码时会更容易处理它们。

  2. 如果您不能(或不想)更改名称(旧项目/不是您的代码等/“我使用任何我想要的块名称”),您可以禁用这些注入。注意:这将影响整个 IDE(其他项目),因为它是捆绑规则(当然,除非您为该其他项目制定自定义规则)。

    为此,只需转到 Settings/Preferences | Editor | Language Injections | Editor | Language Injections 并禁用 Blade 的 2 个捆绑规则:

    enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...