2017-03-11 4 views
0

私は、その値に応じてxフィールドの選択フィールドを生成するselectオプションを持つフォームを持っています。ユーザーがフィールド1で#2を選択すると、2つの新しい自己生成セレクトフィールドがフォームに追加されます。 以下は、新しい選択フィールドをdinamically生成するフォームの一部です。PHPは、サーバー側の検証後に動的に生成されたフィールドのフィールド値を失う

<?php 
for ($i = 1; $i <= $num_of_selects; $i++) { 
?> 
    <select class="form-control" name="test[option<?= $i ?>]"> 
     <option value="1" <?php echo(($withErrors && $test->getoption1() == 1) ? 'selected' : ''); ?>>Test 1</option> 
     <option value="2" <?php echo(($withErrors && $test->getoption1() == 2) ? 'selected' : ''); ?>>Test 2</option> 
     <option value="3" <?php echo(($withErrors && $test->getoption1() == 3) ? 'selected' : ''); ?>>Test 3</option> 
    </select> 
<?php } ?> 

フォームをリフレッシュした後にサーバー側の検証が完了するまで、すべての選択値は最初の値と同じです。 問題は、私がdinamically $ test-> getoption1()を変更する方法を覚えていないので、新しいselectで$ test-> getoption2()、$ test-> getoption3()などのようになります。 ..

getoption1()を使用して、最初の選択でユーザーが設定した選択値を収集します。基本的に私は必要なもの、私がでそうであるように1はdinamically $ Iに応じて変更することができることです。

name="test[option<?= $i ?>]" 

それはあなたは、文字列を作成することができ

$test->getoption[$i]() == $i ; 

答えて

0
  • のようなものになります関数名を使用して関数の代わりに使用してください

    <?php 
        for ($i = 1; $i <= $num_of_selects; $i++) { 
        $functionOptions = 'getoption' . $i; 
        ?> 
        <select class="form-control" name="test[option<?= $i ?>]"> 
        <option value="1" <?php echo(($withErrors && $test->$functionOptions() == $i) ? 'selected' : ''); ?>>Test 1</option> 
        <option value="2" <?php echo(($withErrors && $test->$functionOptions() == $i) ? 'selected' : ''); ?>>Test 2</option> 
        <option value="3" <?php echo(($withErrors && $test->$functionOptions() == $i) ? 'selected' : ''); ?>>Test 3</option> 
    </select> 
    

PHPは、このような状況で本当に役立つように見える「変数関数」の良い量を提供しています。上記の例では、PHPは文字列に一致する関数を探します。ここhttp://php.net/manual/en/functions.variable-functions.php

もっとそれを処理するための別の方法は$test->selectOption($i)のような入力を処理し、その関数はそれを処理し、3つの整数を返すことができます関数を作成してみてくださいです。

+1

回答していただきありがとうございますが、検証しても選択したオプションが表示されませんでした。 –

+0

@TyraPululi今すぐコードを試してください。申し訳ありませんが、間違いがありました。また、無限量の '$ i'のために最適化しました。このコードは、あなたの例であなたが話していることを正確に行います。$ test-> getoption [$ i]()== $ i;' – Rager

+0

もう一度、私は関数定義ファイルをチェックする必要があります。 –

関連する問題