2

大きなフォーム (50 以上のフィールド) を持つ Web サイトがあります。

各フィールドは必須です。フォームが送信されたら、すべての値を xml ファイルに入れる必要があります。

XML ファイルには常に同じ要素が含まれますが、値は異なります。

私はそれらを作成するための最良の方法を見つけようとしてきました.XML用の何らかのテンプレートがあると思いました.

これを行う最善の方法は何ですか?

現在、私は次のようにしています:

$m_content_tag = $doc->createElement("m_content");
$m_content_tag = $message_tag->appendChild($m_content_tag);
$b_control_tag = $doc->createElement("b_control");
$b_control_tag = $m_content_tag->appendChild($b_control_tag);
$b_control_tag->appendChild($doc->createElement('service_provider_reference_number'));
$b_control_tag->appendChild($doc->createElement('intermediary_case_reference_number'));

要素ごとに、管理が非常に難しくなっています。

4

3 に答える 3

1

このような単純な文字列テンプレートを使用しないのはなぜですか?

$template = '<?xml version="1.0"?>
<root>
    <field_1>${field_1}</field1>
    <field_2>${field_2}</field2>
    <field_3>
        <subfield_3>${subfield_3}</subfield_3>
    </field3>
</root>'

${field_name} を具体的な値に置き換えて、値を入力します。

于 2013-07-16T11:57:02.687 に答える
1

Symfony のように、 TWIGを使用して XML テンプレートのレンダリングを処理できます。これにより、すべての XML を別のファイルに保持し、検証済みフィールドの assoc 配列をTWIG のrender メソッドに渡すだけで、残りはTWIGが処理します。さまざまな XML セクションをさまざまなファイルに分割し、それらをブロックとして動的に含めることもできます。

XML テンプレート:

<?xml version="1.0"?>
<root>
    <field_1>{{ var1 }}</field_1>
    <field_2>{{ var2 }}</field_2>
    <field_3>
             {% for subvar in var3 %}
                 <subfield_3>{{ subvar }}</subfield_3>
             {% endfor %}
    </field_3>
</root>

PHP コード:

//Validate fields into assoc array
$fields['var1'] = 'Some Value';
$fields['var2'] = 'Some other Value';
$fields['var3'] = array(1,2,3,4);

//Set up TWIG
$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
    'cache' => '/path/to/compilation_cache',
));

//Render template
echo $twig->render('xml_template.xml', $fields);
于 2013-07-21T10:18:04.393 に答える