块状返回块

时间:2018-08-22 10:58:46

标签: javascript php blockly

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

这是我的方块的初始化:

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;
};

我想做的是使用一个较大的return块,其中将包含整个算法,并使该return块无法删除。

有人可以帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果希望块始终位于工作空间中并且不可删除,则可以在页面加载后立即从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)制作单个块undeletable