我想在表单上使用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块无法删除。
有人可以帮我吗?
谢谢。
答案 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。