2016-12-14 2 views
1


私はsymfony 3とtwigを使って作業しています。私はAPIからDNS情報を取得します。しかし、私はそれがどれくらいの行になるか決して知ることができません。だからここに問題があると言うことができますドメインwww.example.com 3つのDNSの私は私のコントローラを取得するフォームを取得するときに私はフォームから最後のDNSを取得します。symfonyリクエストは1つのリクエストを返します


小枝:

{% if dnsinfo is defined %} 
    <form class="form-inline" method="post" action="/setdns"> 
    {% if dnsinfo is not empty %} 
     {% for dns in dnsinfo %} 
      <div class="row " > 
       <div class="input-group col-xs-3"> 
        <input type="text" id="dns" name="dns" value="{{ dns.1 }}" class="form-control"> 
       </div> 
       <div class="col-xs-2 input-group"> 
        <select class="form-control" id="type" name="type" style="width:100%;"> 
         <option value="notselected" selected disabled>* Select a type</option> 
         <option value="A"{% if dns.2 == 'A' %} selected{% endif %}>A</option> 
         <option value="AAAA"{% if dns.2 == 'AAAA' %} selected{% endif %}>AAAA</option> 
         <option value="CNAME"{% if dns.2 == 'CNAME' %} selected{% endif %}>CNAME</option> 
         <option value="MX"{% if dns.2 == 'MX' %} selected{% endif %}>MX</option> 
         <option value="SOA"{% if dns.2 == 'SOA' %} selected{% endif %}>SOA</option> 
         <option value="TXT"{% if dns.2 == 'TXT' %} selected{% endif %}>TXT</option> 
         <option value="SRV"{% if dns.2 == 'SRV' %} selected{% endif %}>SRV</option> 
        </select> 
       </div> 
       <div class="col-xs-3"> 
        <input type="text" id="content" name="content" value="{{ dns.3 }}" class="form-control"> 
       </div> 
       <div class="col-xs-1"> 
        <input type="text" id="ttl" name="ttl" value="{{ dns.4 }}" class="form-control"> 
       </div> 
       <div class="col-xs-3"> 
        <input type="text" id="prio" name="prio" value="{{ dns.5 }}" class="form-control"> 
       </div> 
      </div> 
      <hr class="divider" style=""> 

     {% endfor %} 
    {% endif %} 
     <input type="submit" class="btn btn-success" value="Save"> 
     <a href="/registereddomain" class="btn btn-secondary">Cancel</a> 
    </form> 
{% endif %} 

symfonyのコントローラ:もちろん

$this->pre($request->request->get('dns')); 
$API = $this->connect(); 
$dns = array(
    'domain' => $request->request->get('domain'), 
    'extension' => $request->request->get('ext'), 
    'dnsdata' => serialize(array(
     1 => array(
      'name'  => $request->request->get('dns'), 
      'type'  => $request->request->get('type'), 
      'content' => $request->request->get('content'), 
      'ttl'  => $request->request->get('ttl'), 
      'prio'  => $request->request->get('prio') 
     ) 
    )) 
); 

$API->prepare('dns', $dns); 

私は解決策を知っています。 fields1 name2などのフィールドの後ろにある数字を使って作業しますが、これを行うにはより良い方法が必要ですか?私は私の要求を印刷する場合、どのよう私が取得しようとしていますと、次のとおりです。

これは、フォームデータの内側にあるものである

[DNS] =>配列(私は自分のフォームで送信するすべてのDNSの持つ配列) https://gyazo.com/ebd558ba7f1ef8e1bfbe86e115bbb1e 私はまだ必要なすべてのデータを保持することがわかります$request->request->get()私は最後のものを取ることができます。 私の質問は、どのようにすべてのデータを取得するのですか?

vardumpと、すべてのフィールドhttps://gyazo.com/0b9725ba8e298c6f59f343d3d5a548c7


sollutionを返す形式:

私はAPIから送信されているどのように多くの分野を知ることができますので、私は数字で働くことになりました。そして、教えてくださいあなたは私のボタンに見ることができるように私はこれを行うには良い方法があるかどうか、私のコントローラに

/** 
* @Route("/setdns{i}", name="setdns", requirements={"i": "\d+"}) 
*/ 
public function setdns(Request $request, $i = false) { 

    $API = new Whoisdomainmodify(); 
    $API = $API->connect(); 

    for ($x=0; $x < $i; $x++) { 
     $dns = array(
      'domain' => $request->request->get('domain'), 
      'extension' => $request->request->get('ext'), 
      'dnsdata' => serialize(array(
       1 => array(
        'name'  => $request->request->get('dns'.$x), 
        'type'  => $request->request->get('type'.$x), 
        'content' => $request->request->get('content'.$x), 
        'ttl'  => $request->request->get('ttl'.$x), 
        'prio'  => $request->request->get('prio'.$x) 
       ) 
      )) 
     ); 
     echo '<pre>'; 
     print_r($dns); 

     $API->prepare('dns', $dns); 
     // $API->execute(); 
     // $API->fetch(); 
    } 

    $this->addFlash('Success', 'DNS successfully changed'); 

    return $this->redirectToRoute('registereddomain'); 

} 

を番号を送信するためにjqueryのを使用するすべてのフィールドに

 {% if dnsinfo is defined %} 
         {% set i=0 %} 

         <form class="form-inline" method="post" id="form" action="/setdns"> 
          <input value="{{ domain }}" hidden name="domain" id="domain"> 
          <input value="{{ ext }}" hidden name="ext" id="ext"> 
         {% if dnsinfo is not empty %} 
          {% for dns in dnsinfo %} 
           <div class="row " > 
            <div class="input-group col-xs-3"> 
             <input type="text" id="dns{{ i }}" name="dns{{ i }}" value="{{ dns.1 }}" class="form-control"> 
            </div> 
            <div class="col-xs-2 input-group"> 
             <select class="form-control" id="type{{ i }}" name="type{{ i }}" style="width:100%;"> 
              <option value="notselected" selected disabled>* Select a type</option> 
              <option value="A"{% if dns.2 == 'A' %} selected{% endif %}>A</option> 
              <option value="AAAA"{% if dns.2 == 'AAAA' %} selected{% endif %}>AAAA</option> 
              <option value="CNAME"{% if dns.2 == 'CNAME' %} selected{% endif %}>CNAME</option> 
              <option value="MX"{% if dns.2 == 'MX' %} selected{% endif %}>MX</option> 
              <option value="SOA"{% if dns.2 == 'SOA' %} selected{% endif %}>SOA</option> 
              <option value="TXT"{% if dns.2 == 'TXT' %} selected{% endif %}>TXT</option> 
              <option value="SRV"{% if dns.2 == 'SRV' %} selected{% endif %}>SRV</option> 
             </select> 
            </div> 
            <div class="col-xs-3"> 
             <input type="text" id="content{{ i }}" name="content{{ i }}" value="{{ dns.3 }}" class="form-control"> 
            </div> 
            <div class="col-xs-1"> 
             <input type="text" id="ttl{{ i }}" name="ttl{{ i }}" value="{{ dns.4 }}" class="form-control"> 
            </div> 
            <div class="col-xs-3"> 
             <input type="text" id="prio{{ i }}" name="prio{{ i }}" value="{{ dns.5 }}" class="form-control"> 
            </div> 
           </div> 
           <hr class="divider" style=""> 
           {% set i = i + 1 %} 
          {% endfor %} 
         {% endif %} 
          <input type="submit" class="btn btn-success" onclick="$('#form').attr('action','/setdns{{ i }}')" value="Save"> 
          <a href="/registereddomain" class="btn btn-secondary">Cancel</a> 
         </form> 
        {% endif %} 

をループ私。私はすべてのフォームデータを送信するので、gyazoを参照してください。あなたが使用することができ、たとえば

http://twig.sensiolabs.org/doc/tags/for.html#the-loop-variable

:これらの線に沿って

{{ dns.loop.index0 }} 

か何かを

+0

あなたが含むジャヤリンクは機能しません。また、 '{{dump(dnsinfo)}}'を実行して、内部に何があるかを見ることができます。 '{{dns​​.1}} 'はそれを呼び出す最良の方法のようではありません。 –

+0

私はフィールドの背後にある数字に取り組むつもりです@AlvinBunk – Laurence

答えて

2

あなたは小枝のループのための変数を持っていることを知っていました。やってみて。あなたがそれに慣れれば、それはあなたに多くのコーディングを保存するかもしれません。これが答えなのかどうかはわかりませんが、それはあなたを助けるかもしれません。

+0

私は月曜日にこれをチェックするかもしれませんが、今は時間がありません。本当にごめんなさい – Laurence

+0

私はそれを確認しました遅く反応して申し訳ありませんが、それは私が意味するものではありません。Urソリューションは小枝にあります。私はコントローラに投稿データを返し、それを使用したいと思います。@ Alvin Bunk – Laurence

関連する問題