PhpStorm 将语言注入 xml 文件中的 <![CDATA[ 区域
PhpStorm inject language into <![CDATA[ area in xml file
我现在正在从事 OpenCart 项目,该项目大量使用 XML-configs 进行扩展(称为 OCMOD)。
XML配置是声明和注入PHP/CSS/JavaScript代码的混合,见下面部分真实的OCMOD修改文件:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<name>some name</name>
<id>some ID</id>
<version>some version</version>
<code>some code</code>
<author>author</author>
<link><![CDATA[link]]></link>
<file path="catalog/controller/product/product.php">
<operation>
<search><![CDATA[
$product_info = $this->model_catalog_product->getProduct($product_id);
]]></search>
<add position="after"><![CDATA[
// some PHP code here
$s = 'hello world';
echo $s;
]]></add>
</operation>
</file>
</modification>
我使用PHPStorm 2019.2 进行开发。默认情况下,它与 plugin to inject code 捆绑到源文件中。
是否有任何技术可以实现注入 XML 代码的语法高亮显示?
P.S。我找到了 this answer,但它不符合我的需要,因为 PHP-injections 在我的文件中没有 <?php
和 ?>
标签。
您在 Opencart 中使用的 ocmod 语法不正确。
必须是:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<name>some name</name>
<id>some ID</id>
<version>some version</version>
<code>some code</code>
<author>author</author>
<link><![CDATA[link]]></link>
<file path="catalog/controller/product/product.php">
<operation error="log">
<search><![CDATA[
$product_info = $this->model_catalog_product->getProduct($product_id);
]]></search>
<add position="after"><![CDATA[
// some PHP code here
$s = 'hello world';
echo $s;
]]></add>
</operation>
</file>
</modification>
文件必须与 "PHP File" 文件类型相关联,以便 PhpStorm 在此类文件中提供 PHP 支持。你不能拿一个随机文件说 "this section from here to there is PHP" 因为 PHP 支持在 IDE 中还没有 "PHP as Injectable Language" 实现。您的文件没有 PHP 标签 (<?php ... ?>
),因此模板日期语言的标准内容在这里无济于事。
下一个 2019.3 版本的 PhpStorm 将附带 Injectable PHP。 ATM 我不知道这是否适用于您的示例(以及它的整体工作方式);根据现有票据,它意味着被注入到已经使用 PHP 代码的其他文字中:例如eval()
、PHP Markdown 中的块和类似的东西。需等待2019.3 EAP程序启动后再试。
现在这张票似乎完全符合您的需求:https://youtrack.jetbrains.com/issue/WI-47857 -- 观看它 (star/vote/comment) 以获得有关任何进展的通知。
它指的是与您类似的案例(参见github.com/Combodo/iTop)。
请随意在此处评论您的示例(以便开发人员知道对此类功能的需求)。
我现在正在从事 OpenCart 项目,该项目大量使用 XML-configs 进行扩展(称为 OCMOD)。
XML配置是声明和注入PHP/CSS/JavaScript代码的混合,见下面部分真实的OCMOD修改文件:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<name>some name</name>
<id>some ID</id>
<version>some version</version>
<code>some code</code>
<author>author</author>
<link><![CDATA[link]]></link>
<file path="catalog/controller/product/product.php">
<operation>
<search><![CDATA[
$product_info = $this->model_catalog_product->getProduct($product_id);
]]></search>
<add position="after"><![CDATA[
// some PHP code here
$s = 'hello world';
echo $s;
]]></add>
</operation>
</file>
</modification>
我使用PHPStorm 2019.2 进行开发。默认情况下,它与 plugin to inject code 捆绑到源文件中。
是否有任何技术可以实现注入 XML 代码的语法高亮显示?
P.S。我找到了 this answer,但它不符合我的需要,因为 PHP-injections 在我的文件中没有 <?php
和 ?>
标签。
您在 Opencart 中使用的 ocmod 语法不正确。 必须是:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<name>some name</name>
<id>some ID</id>
<version>some version</version>
<code>some code</code>
<author>author</author>
<link><![CDATA[link]]></link>
<file path="catalog/controller/product/product.php">
<operation error="log">
<search><![CDATA[
$product_info = $this->model_catalog_product->getProduct($product_id);
]]></search>
<add position="after"><![CDATA[
// some PHP code here
$s = 'hello world';
echo $s;
]]></add>
</operation>
</file>
</modification>
文件必须与 "PHP File" 文件类型相关联,以便 PhpStorm 在此类文件中提供 PHP 支持。你不能拿一个随机文件说 "this section from here to there is PHP" 因为 PHP 支持在 IDE 中还没有 "PHP as Injectable Language" 实现。您的文件没有 PHP 标签 (<?php ... ?>
),因此模板日期语言的标准内容在这里无济于事。
下一个 2019.3 版本的 PhpStorm 将附带 Injectable PHP。 ATM 我不知道这是否适用于您的示例(以及它的整体工作方式);根据现有票据,它意味着被注入到已经使用 PHP 代码的其他文字中:例如eval()
、PHP Markdown 中的块和类似的东西。需等待2019.3 EAP程序启动后再试。
现在这张票似乎完全符合您的需求:https://youtrack.jetbrains.com/issue/WI-47857 -- 观看它 (star/vote/comment) 以获得有关任何进展的通知。
它指的是与您类似的案例(参见github.com/Combodo/iTop)。
请随意在此处评论您的示例(以便开发人员知道对此类功能的需求)。