【问题标题】:PhpStorm showing 'Attribute value not closed' errorPhpStorm 显示“属性值未关闭”错误
【发布时间】:2021-02-16 06:28:32
【问题描述】:

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

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

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

【问题讨论】:

  • 如果你这样做会更好吗src="{{ asset('js/dashboard.js') }}"
  • 上下文很重要。显示一个更大的图片——整个文件的样子(整个 IDE 的屏幕截图)——它可能会揭示一些你可能只是跳过的细微差别。
  • LazyOne - 添加了屏幕截图。詹姆斯 - 双引号/单引号是一样的,你可以在截图中看到
  • 我可以重新创建您的问题,但如果将部分标签更改为 javascript 以外的任何内容,它就会消失。也许那个标签是保留的?

标签: laravel phpstorm laravel-blade


【解决方案1】:

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

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

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

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

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

    由于许多项目中经常使用此类块名称,因此将来在使用其他人的代码时会更容易处理它们。

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

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

【讨论】:

  • 太棒了,感谢 LazyOne 的时间和解释。我将重命名该部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多