PhpStorm 显示 'Attribute value not closed' 错误

PhpStorm showing 'Attribute value not closed' error

我正在使用 Blade 语法和 Laravel 资产链接在 blade @section 中添加一个 JS 文件,但 PhpStorm 将其标记为 'Attribute value not closed' 在下面显示的地方有红色的波浪线。它不识别 'src' 元素是关闭的,所以代码着色也是错误的。

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

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

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

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

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

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

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

    由于这样的块名在很多项目中都非常常用,以后用别人的代码处理起来会更容易。

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

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