/ / Comunicando entre o xform e o php-server - php, xforms

Comunicando-se entre o xform e o php-server - php, xforms

Eu tenho a pergunta sobre a comunicação entre xforms e php-server do chiba-3.0.0b2 Existe um server.php como:

<?php
$var1 = isset($_POST["var1"]) && is_numeric($_POST["var1"]) ? $_POST["var1"] : 0;
$var2 = isset($_POST["var2"]) && is_numeric($_POST["var2"]) ? $_POST["var2"] : 0;
$sum = $var1 + $var2;
$str = "$var1 + $var2 = $sum";
?>

E usando essas variáveis ​​em xml-code no mesmo arquivo serer.php

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<sum><?php  echo $str;  ?></sum>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

XHtml-client

<?xml version="1.0" encoding="utf-8"?>
<xhtml:html
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:events="http://www.w3.org/2001/xml-events"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:my="http://www.example.com">
<xhtml:head>
<xhtml:title>XForm</xhtml:title>

Aqui começa um modelo

<xforms:model id="model1">

Instância contendo algumas variáveis

    <xforms:instance id="submit_inst">
<SOAP-ENV:Envelope xmlns="">
<SOAP-ENV:Body>
<my:start SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<var1 xsi:type="xsd:string"></var1>
<var2 xsi:type="xsd:string"></var2>
</my:start>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</xforms:instance>

Vinculando as variáveis ​​de instância

    <xforms:bind id="bind_var1" nodeset="instance("submit_inst")/SOAP-ENV:Body/my:start/var1" />
<xforms:bind id="bind_var2" nodeset="instance("submit_inst")/SOAP-ENV:Body/my:start/var2" />

Uma instância de resultado da soma

    <xforms:instance id="result_inst">
<SOAP-ENV:Envelope/>
</xforms:instance>

Existe a submissão

    <xforms:submission
id="submissionId"
action="server.php"
method="post"
includenamespaceprefixes=""
ref="instance("submit_inst")"
mediatype="action=; application/soap+xml; charset=utf-8"
instance="result_inst"
replace="instance">
<xforms:toggle case="case-busy" events:event="xforms-submit" />
<xforms:toggle case="case-submit-error" events:event="xforms-submit-error" />
<xforms:toggle case="case-done" events:event="xforms-submit-done" />
</xforms:submission>
</xforms:model>

Há fim de um modelo e a cabeça e o começo do corpo

Dois números de entradas e saídas

<xforms:input ref="instance("submit_inst")/SOAP-ENV:Body/my:start/var1" bind="bind_var1" />
<xforms:output ref="instance("submit_inst")/SOAP-ENV:Body/my:start/var1" bind="bind_var1" />
<xhtml:br/>
<xforms:input ref="instance("submit_inst")/SOAP-ENV:Body/my:start/var2" bind="bind_var2" />
<xforms:output ref="instance("submit_inst")/SOAP-ENV:Body/my:start/var2" bind="bind_var2" />
<xhtml:br/>

botão para chamar a submissão

<xforms:submit submission="submissionId">
<xforms:label>Submit</xforms:label>
</xforms:submit>

Alguns casos de carregamento, erro e sucesso

        <xforms:switch>
<xforms:case id="case-busy">Loading...</xforms:case>
<xforms:case id="case-submit-error">Submision error!</xforms:case>
<xforms:case id="case-done">
<xforms:output ref="instance("result_inst")/SOAP-ENV:Body/sum"/>
</xforms:case>
</xforms:switch>

</xhtml:body>
</xhtml:html>

O que fazer com que php "s $ _POST não é array () ou seja, array (" var1 "=> 2," var1 "=> 3,)? Não funciona, o servidor não vê as variáveis ​​$ _POST enviadas .

Respostas:

0 para resposta № 1

Por padrão, suas instâncias XML são enviadas como XML serializadas no corpo da solicitação.

Você deseja receber os dados do formulário como campos de formulário HTML tradicionais, deve alterar o method atribuir a urlencoded-post em sua submissão.

Você pode encontrar alguns exemplos de manipulação de XForms com PHP em http://php.net/manual/en/features.xforms.php

Eu acho que este script php de outro processador XForms pode ajudar a depurar o conteúdo enviado para o seu servidor: http://sourceforge.net/p/xsltforms/code/ci/master/tree/src/echo.php