0

我想在表单上使用 Blockly 让用户创建自己的算法。为此,我使用了我创建的“返回”块,因此我可以使用 PHP 中的 eval 调用此算法。

这是我的块的 init :

var jsonReturn = {
    "message0"          :"Return %1",
    "args0"             :[
                            {"type":"input_value", "name":"script"}
                        ],
    "previousStatement" :null,
    "colour"            :70,
    "tooltip"           :"Renvoie le nouveau prix"}

Blockly.Blocks['return'] = {init: function() { this.jsonInit(jsonReturn);}};

这是 PHP 的代码生成器:

Blockly.PHP['return'] = function(block) {
    var argument0 = Blockly.PHP.valueToCode(block, 'script');
    var code = 'return ' + argument0 + ';\n';
    return code;
};

我想做的是使用一个包含整个算法的大返回块,并使这个返回块无法删除。

有人可以帮我吗?

谢谢。

4

1 回答 1

2

如果您希望您的块始终位于工作区并且不可删除,您可以在页面加载后立即从 XML 加载它。

您的 XML 将如下所示:

<xml xmlns="http://www.w3.org/1999/xhtml">
  <block type="return" id="my_return_block_id" deletable="false"></block>
</xml>

你会用Blockly.Xml.domToWorkspace(yourXml, yourWorkspace).

如果您希望用户添加块,但使其不可删除,您可以在创建块后使单个块不可删除block.setDeletable(false)

于 2018-08-22T18:13:01.807 回答