我想在一个表单上使用Blockly,让用户创建自己的算法。为此,我使用了一个我创建的"return“块,这样我就可以在PHP中用eval调用这个algo。
这是我的块的初始化:
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;
};我想做的是使用一个大的返回块,其中包含了整个算法,并使这个返回块无法删除。
有人能在这方面帮我吗?
谢谢。
发布于 2018-08-23 02:13:02
如果您希望块始终位于工作区中并且不可删除,则可以在页面加载时立即从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。
https://stackoverflow.com/questions/51965352
复制相似问题