2011-08-24 9 views
1

Xforms/Php/Mysql을 사용하여 설계된 응용 프로그램이 있습니다. PHP를 사용하여 MySQL DB에서 Xml 생성하려면 관리해야하지만 편집을 위해 내 xforms 폼에 xml 값을로드하는 방법? 또한 필요한 컨트롤을 채울 때 오류 메시지를 표시하려면 출력 컨트롤을 트리거 할 수 있습니다. 제출을 위해 xforms-submit-error 이벤트에 팝업 메시지 요소를 표시하지 마십시오. 제발 도와 줘서 고마워.Php에서 생성 된 Xml을 편집을 위해 Xforms 폼으로로드하려면 어떻게해야합니까?

+0

양식 작성기로 만든 양식입니까, 아니면 XForms를 "손으로"텍스트 편집기로 작성하고 있습니까? – avernet

+0

안녕하세요, Avernet, 나는 '손으로'텍스트 편집기로 xforms 코드를 작성하고 있습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있으시면 도움을 받으실 수 있습니다. – dush

답변

1

먼저 XML을 출력하는 PHP를 사용하여 리소스를 만듭니다. HTTP GET을 할 때이 작업을 수행하십시오. 이 데이터는 XForms를 "에로드됩니다

<data> 
    <pizza> 
    <size>medium</size> 
    <topping>pepperoni</topping> 
    <notes>Extra cheese</notes> 
    </pizza> 
</data> 

: http://www.ibm.com/developerworks/xml/library/x-xformstipphp/

는 이제 데이터가 다음과 같다고 가정 해 보겠습니다 그런 다음이 IBM에서이 팁을 사용하여 HTTP POST와 같은 XML을 다시 받아 들일 수 있도록 인스턴스 "는 XForms가 HTTP 및 POST를 통해로드 할 수있는 XML 변수를 호출하는 것입니다. Order를 누를 때, 폼은 XML을 자원에 다시 게시 할 것이고, 그러면 PHP는이를 데이터베이스에 다시 써 넣어야한다. 그런 다음 PHP는 업데이트 된 XML을 출력합니다.이 XML은 XForms 프로세서로 다시 보내지고 인스턴스를 업데이트하며 폼은 동일한 페이지에 머물면서 업데이트 된 값을 표시합니다.

그런 다음, HTML 페이지에서 다음과 같이 사용 : 레이아웃에 대한 CSS가 없기 때문에 당신이 페이지에 표시 할 경우

html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events"> 
    <head> 
    <title>Pizza</title> 
    <model xmlns="http://www.w3.org/2002/xforms"> 
     <instance resource="/path/to/my/data.php" /> 
     <submission resource="/path/to/my/data.php" method="post" replace="instance" id="order" /> 
    </model> 
    </head> 
    <body> 
    <group ref="pizza" xmlns="http://www.w3.org/2002/xforms"> 
     <select1 ref="size"> 
     <label>Size: </label> 
     <item><label>Large</label><value>large</value></item> 
     <item><label>Medium</label><value>medium</value></item> 
     <item><label>Small</label><value>small</value></item> 
     </select1> 
     <select1 ref="topping"> 
     <label>Topping: </label> 
     <item><label>Large</label><value>large</value></item> 
     <item><label>Medium</label><value>medium</value></item> 
     <item><label>Small</label><value>small</value></item> 
     </select1> 
     <textarea ref="notes"> 
     <label>Notes: </label> 
     </textarea> 
     <submit submission="order"> 
     <label>Order</label> 
     </submit> 
    </group> 
    </body> 
/html   

이 매우 좋지 않습니다. Orbeon을 사용하는 경우 avernet을 사용하면 레이아웃을 도와줍니다.

AgenceXML xsltforms를 사용하는 경우이를 block-form.css에 넣고 을 페이지의 머리에 추가하십시오.

.block-form { 
    margin-left: 3pt; 
    margin-top: 3pt; 
    margin-bottom: 3pt; 

} 

.block-form span.xforms-control > span { 
    display:inline-block; 
    white-space:nowrap; 
} 

.block-form label.xforms-label { 
    display:inline-block; width:6em; 
    text-align:left; 
    margin-right:4px; 
} 

.block-form span.xforms-input.row, 
span.xforms-select.row, 
span.xforms-select1.row, 
span.xforms-textarea.row, 
span.xforms-secret.row, 
span.xforms-output.row { 
    display:block; 
} 

.block-form-section > div.xforms-group-content { 
    padding-bottom: 10px; 
    margin: 2px; 
    width: 32em; 
} 

.block-form-section .xforms-group-label { 
    display: inline-block; 
} 

.wide .xforms-value { 
    width: 32em; 
} 

외부 그룹에는 class = "block-form"을 입력하고 select1 및 textarea에는 class = "row"를 입력하고 제출하십시오.

XSLTForms로 작업하는이 예제를 보려면 http://xformstest.org/klotz/2011/08/pizza/pizza.xml을 방문하십시오. 소스보기도 함께 작동합니다. 주문 단추는 데이터를 제출하고 PHP 프로그램이 단순히 무시하기 때문에 변경되지 않은 상태로 되돌립니다. 대신 새 데이터를 얻을 후 다른 페이지로 이동하려면

것은, 당신이 이런 식으로 작업을 수행 할 수 있습니다 - 새를 가질 수

<submission resource="/path/to/my/data.php" method="post" replace="instance" id="order"> 
    <load ev:event="xforms-submit-done" resource="/path/to/my/new/page.html" /> 
</submission> 

(부하에 대한 자세한 내용을 읽으려면 http://en.wikibooks.org/wiki/XForms/Load 참조 페이지로 이동하여 XML 인스턴스의 일부로 반환하고 < load = "...">를 사용하여 조건 적으로 다른 페이지로 이동하십시오.)

또한 토핑 목록을 HTML 페이지에서 가져올 수도 있습니다 두 번째 인스턴스에 넣으므로 별도의 서버 측 PHP 프로그램이나 정적 파일로 결정할 수 있습니다. 이 작업을 수행하는 방법은 select1 및 itemset을 참조하십시오. 이 시점에서 바인드를 사용하여 조건을 데이터에 첨부 할 수 있으므로 관련성을 제어하고 전체 밀 피자가 베이컨을 갖거나 인스턴스 데이터 주변에 표현할 수있는 조건을 설정할 수 있습니다.

업데이트 다음은 실행 버전입니다. save를 누르면 데이터가 POST되지만 서버 측은 아무 것도하지 않습니다. View Source를 사용하여 현재 진행중인 작업을 확인할 수 있습니다.http://xformstest.org/klotz/2011/08/pizza/pizza.xml

+0

Okay Klotz, 아이디어를 주셔서 감사합니다. – dush

+0

안녕하세요, 저는 이제 XML을 생성하는 PHP를 가지고 있고 올바른 경로에 있는지 알고 싶습니다. 이 스크립트는 데이터베이스의 데이터로 XML을 생성하지만이 XML을 양식으로 새 인스턴스 데이터로 다시 게시하여 양식이 편집을 위해 채워지는 방법은 무엇입니까? – dush

+0

@dush, 먼저 당신의 서비스에 대한 경로 인 "'. 둘째, 모델에 다음을 삽입하여 페이지가로드 될 때 실행하십시오 :''. – avernet

관련 문제