我正在尝试使用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注入)。