2017-05-03 3 views
2

structr 2.0.1을 사용하여 결과 페이지를 만들려고합니다. 이 페이지 내에서 사이퍼 용 동적 검색 입력

enter image description here

나는 사용자 입력의 결과를 보여주고 싶어요. 입력 필드에 입력 된 문자열은 Cypher 쿼리를 통해 Neo4j-DB로 전송되어야합니다.
Input = "admin" -> Cypher(Match (n) Where n.name = 'admin' Return n) 

리턴 값은

(완전히 잘 작동 아무런 문제가 없음) 정수-ID를 통해 OBJ 그래프를 초기화하는데 사용된다.

조사 시간 후 불행히도 나는 마녀 내장 기능을 수행 할 수 없습니다. "Query & 데이터 바인딩", & "HTML 속성"- 페이지 및 Java 스크립트로 많이 시도했지만 내 html 요소의 값을 내 사이퍼 쿼리 함수로 전송할 수 없습니다.

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

직접적인 ajax 호출없이이 문제를 해결하려면 structr 내에 솔루션이 있어야합니다.

어쩌면 다른 사람이 같은 문제를 발견했거나 해결책이 될 수도 있습니다.

이 경우 일부 도움을 주시면 감사하겠습니다.

감사합니다!

미로

답변

2

요청 매개 변수의 값은 해당에 대한 자세한 내용은 https://support.structr.com/article/119를 참조 StructrScript에서 사용할 수 있습니다.

스크립팅 컨텍스트에는 직접 액세스 할 수있는 request이라는 개체가 있으며 여기에는 Structr에 보내는 요청 매개 변수가 포함됩니다. 따라서 귀하의 경우,이 같은 (당신이 name에 이름을 설정한다)하여 입력 필드의 값에 액세스 할 수 있습니다

다음 단계는 그 일 할 필요
${request.name} 

:

  1. 을 만들 <form method="POST" action="/${page.name}">
  2. 삽입 <input type="text" name="name" value="${request.name}">
  3. 삽입 <input type="submit" value="submit">
,

양식을 제출하면 위에서 설명한대로 Structr 컨텍스트에서 요청 매개 변수 "name"을 사용할 수 있습니다.

당신이 그런 예를 들어, 요청 값 주위에 쿼리를 구성해야하는 사이퍼 쿼리에 그 값을 삽입하려면 :

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

그러나 그런 설정에 매우 조심, 위의 코드 때문에 쿼리 주입 공격 (일명 SQL 주입 또는이 경우 CQL 주입)에 취약합니다.

+0

고맙습니다. 해결책은 나를 위해 일했습니다. – M4Z3