我正在尝试使用structr 2.0.1创建一个结果页面。

enter image description here

在这些页面中,我想显示用户输入的结果。输入到我的输入字段中的字符串应通过密码查询传输到我的Neo4j-DB。

Input = "admin" -> Cypher(Match (n) Where n.name = 'admin' Return n)


该返回值将用于通过整数ID实例化图形obj(这完全正常,没有问题)。

不幸的是,经过数小时的调查,我无法完成内置功能。我还尝试了“查询和数据绑定”,“ HTML属性”页面和Java脚本,但是我无法将html元素的值传递给我的前端的cypher查询函数。

[input field ("String")--> button fuction()--> cypher (Query) --> function input {graph.addNode(ID)}]


构造函数中必须有一个解决方案,无需直接进行ajax调用即可解决此问题。

也许您中有人发现了相同的问题或对此有解决方案。

在这种情况下,我将不胜感激。

谢谢!

迷宫

最佳答案

您的request参数的值在StructrScript中可用,请参见https://support.structr.com/article/119以获得更多详细信息。

在脚本编写上下文中,有一个名为request的对象可以直接访问,该对象将包含您发送给Structr的任何请求参数。因此,在这种情况下,您可以按以下方式访问输入字段的值(前提是您将名称设置为name):

${request.name}


需要执行以下步骤才能完成该工作:


创建<form method="POST" action="/${page.name}">
插入<input type="text" name="name" value="${request.name}">
插入<input type="submit" value="submit">


提交表单时,如上所述,请求参数“名称”将在Structr上下文中可用。

要将值插入Cypher查询中,您必须围绕请求值构造查询,例如:

${cypher(concat('MATCH (n) WHERE n.name = "', request.name, '" RETURN n'))}


但是对于这样的设置要非常小心,因为上面的代码容易受到查询注入攻击(又名SQL注入,在这种情况下为CQL注入)。

07-25 22:27