javascript — вернуть блок на Blockly

Я хотел бы использовать Blockly в форме, чтобы позволить пользователям создавать свой собственный алгоритм.
Для этого я использую созданный мной блок return, чтобы я мог вызвать этот алгоритм с помощью eval в PHP.

Вот инициализация моего блока:

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

То, что я хотел бы сделать, это использовать большой блок возврата, который содержал бы весь алгоритм в нем, и сделать этот блок возврата невозможным для удаления.

Может ли кто-нибудь помочь мне в этом?

Благодарю.

0

Решение

Если вы хотите, чтобы ваш блок всегда находился в рабочей области и не мог быть удален, вы можете загрузить его из 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) после того, как блок был создан.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]