我尝试使用structr 2.0.1创建结果页面。
在这些页面中,我想显示用户输入的结果。输入到输入字段的字符串应通过密码查询传送到我的Neo4j-DB。
Input = "admin" -> Cypher(Match (n) Where n.name = 'admin' Return n)
返回值将用于通过整数id实例化一个图形obj(完全正常并且没有问题)。
不幸的是,经过数小时的调查后,我无法通过内置功能实现这一目标。我尝试了很多"查询&数据绑定",& " HTML-Properties" -Page和Java Script,但是我无法将我的html元素中的值传递给我前面的cypher查询函数。
[input field ("String")--> button fuction()--> cypher (Query) --> function input {graph.addNode(ID)}]
在没有直接的ajax调用的情况下,structr中必须有一个解决方案来解决这个问题。
也许有人发现了同样的问题或者有解决方案。
在这种情况下,我非常感谢一些帮助。
谢谢!
迷宫
答案 0 :(得分:2)
您的请求参数的值在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">
当您提交表单时,请求参数“name”将在Structr上下文中可用,如上所述。
要将该值插入Cypher查询,您必须围绕请求值构造查询,例如:
${cypher(concat('MATCH (n) WHERE n.name = "', request.name, '" RETURN n'))}
但要非常小心这样的设置,因为上面的代码很容易受到查询注入攻击(在这种情况下称为SQL注入,或者更确切地说是CQL注入)。