在phpstorm

时间:2015-08-12 10:17:34

标签: javascript laravel phpstorm syntax-highlighting blade

在我正在使用的现有laravel应用程序中,.blade.php文件包含一个body部分,其中包含我的html和php。在body部分后,它们包含custom_js部分,用于插入javascript代码。在父模板中,custom_js部分嵌入如下:

<script>
@include('custom_js')
</script>

我无法在我的.blade.php文件中为我的javascript代码获得正确的语法突出显示。 Php和html正确突出显示 如果我将javascript代码放在<script>标记内,突出显示工作正常,其他开发人员迄今为止的工作情况如何,但在部署之前,您必须删除这些标记,否则会有2个开放和2个关闭<script>标签。我不太愿意更改父模板,因为这会导致极大的重构工作 我已经尝试将此特定文件的模板数据语言设置为各种语言,但这并没有帮助。

有一种简单的方法,还是我必须在部署之前手动插入和删除<script>标记?

我使用的是PhpStorm 8.0.3。

4 个答案:

答案 0 :(得分:1)

最好的解决方案是

...用于使用注释样式的语言提示-类似于

// @lang JavaScript
someCode();
// @endlang

用语言注入描述了类似的东西,但是我无法以这种方式完成这项工作:/-如果这样做,我将对其进行更新,我在这里就通用问题提出了一个单独的问题:
How to set syntax highlighting to a code section to a specific language programatically/with comments?

更漂亮的方式

...是直接使用语言注入-右键单击代码,然后单击Show context actions(或Alt + Enter)=>选择Inject language or reference =>选择您选择的语言,尽管这确实会突出显示JavaScript,对我来说,它会部分破坏文件的其余高亮显示。

丑陋但通用的工作解决方案

...以某种方式欺骗PHPStorm,认为它实际上是在添加<script>标记,但实际上您会将其注释掉。

{!! /* JS syntax highlighter !!}<script>{!! */'' !!}
var following = "javascript";
var doer = () => {
   console.log(following);
};

该技巧基于以下事实:{!! X !!}实际上被转换为<?php echo X; ?>-通常,它是用于显示您不想被HTML转义的文本的工具。

所以代码变成了

<?php echo /* JS syntax highlighter; ?><script><?php echo */''; ?>

最后,它只是“ echos”空字符串。

答案 1 :(得分:0)

您需要在父刀片视图中生成custom_js。

像这样:@yield('custom_js')

无需将其包装在脚本标记中。

答案 2 :(得分:0)

哇。我真的很惊讶,phpstorm无法自动为你突出显示 - 事实上,我甚至找不到强制语法突出显示的选项,这非常令人失望,因为记事本++可以用2做点击次数。

我的解决方案&#34; (这很难看,所以我很难称之为解决方案)是这样做的:

<script>

...some javascript...

</script>
@include("customJavascript")
<script>

...some javascript...

</script>

然后在包含javascript片段的每个包含的blade.php中打开和关闭脚本标记。这真的很麻烦,所以我希望有人有更好的解决方案来使代码有序。

答案 3 :(得分:0)

如果它仍然是实际的:

只需将标记放入custom_js文件并将代码放入其中即可。 PhpStorm会正确地突出显示所有内容。