2016-07-21 19 views
0

Ich möchte einige Daten von meiner Datenbank trennen. Ich habe eine Tabelle in meiner Ansicht, die einige Daten mit Checkboxen zeigt. Jedes Tag hat ein eigenes Kontrollkästchen. Ich möchte alle tag_id's von den Tags übergeben, die ich überprüft habe. Um sie zu lösen, brauche ich auch die Domain-ID. Ich habe einige Dinge ausprobiert, konnte aber nicht herausfinden, wie ich die ganze domain_id mit den tag_id's, die ich markiert habe, weitergeben kann.Übergeben Sie zwei verschiedene Array-Werte an den Controller, um sie mit Laravel zu lösen.

<tbody> 
    {!! Form::open(['action' => '[email protected]', 'method' => 'post']) !!}  
       @foreach($domains as $domain) 
        <tr> 
         <td>{{ $domain->name }}</td> 
         <td>{{ $domain->tld }}</td> 
         <td id="hello"> 
          @foreach($domain->tags as $tag) 
           {{ $tag->name }},<br> 
          @endforeach 
         </td> 
         <td> 
          <input name="domain_id[]" type="hidden" value="{{ $domain->id }}"> 
          @foreach($domain->tags as $tag) 
           <input type="checkbox" name="tag_id[]" value="{{$tag->id}}"><br> 
          @endforeach 
         </td> 
        </tr> 
       @endforeach 
</tbody> 


<div class="btn-group"> 
     <button type="button" dropdown-toggle" data-toggle="dropdown" >Action<span class="caret"></span></button> 
     <ul class="dropdown-menu" role="menu"> 
      <li><a> 
        <button>Send</button> 
      </a></li> 
     </ul> 
    </div> 
    {!! Form::close() !!} 

Jetzt möchte ich jeden tag_id und die domain_id der Tags bekommen, wenn ich sie mit einem Häkchen markieren.

Als Ausgangs brauche ich so etwas wie dieses:

[0] = "domain_id" : 5, 
     "tag_id" : [0] => 1, 
       [1] => 2, 
       [2] => 3, 
[1] = "domain_id" : 6, 
     "tag_id" : [0] => 10, 
       [1] => 11, 
       [2] => 12, 

derzeit .. das ist, was ich

{"domain_id":["5","6","10","13","15","18","19","22","23","24","28"],"tag_id":["273","286","285"]} 

bekomme ich Tags aus der Domäne nur markiert haben mit ID 5, aber es gab mir alle domain_id's und ich konnte nicht herausfinden, warum ..

+0

Warum setzen Sie dem Wert "tag_id" nicht die domain_id im von einem Delimeter getrennten Wertparameter voran (z. B. 6:10). Verwenden Sie eine Art von Indikator, die Sie in Ihrem Controller während der Verarbeitung der Anfrage explodieren können. –

+0

Kannst du mir ein Beispiel geben? Denn ich meinte jetzt nicht wirklich, was meinst du mit – WellNo

+0

(ich sollte besser sagen, ich weiß was du meinst aber nicht wirklich weißt wie ich das machen kann – WellNo

Antwort

0

Ein Formular wird keine Werte auf die von Ihnen gewünschte Art ausgeben, da es keine Sub-Arrays erzeugen kann, so wie in meinem Kommentar erwähnt, müssen Sie improvisieren. Ihre Quintessenz ist, dass Sie die domain_id mit jeder tag_id in irgendeiner Weise verbinden müssen, damit Sie diese Datenbank oder was auch immer daten können.

Ich schlage vor, Ihren Tag Checkbox wie dies aus Ihrer Sicht der Schaffung

<td> 
    @foreach($domain->tags as $tag) 
     <input type="checkbox" name="tag_id[]" value="{{$domain->id}}:{{$tag->id}}"><br> 
    @endforeach 
</td> 

wenn vorgelegt, soll es die tag_id im Request-Objekt-Format wie diese

[0] = "tag_id" : [0] => 5:1, 
       [1] => 5:2, 
       [2] => 5:3, 
       [3] => 6:10, 
       [4] => 6:11, 
       [5] => 6:12, 

Jetzt können Sie Schleife über die tag_id Array und trennen Sie die Domain_id und Tag_id Felder zu tun, was Sie brauchen (Ihr Beispiel nicht sagen, was Sie damit tun wollten)

foreach ($request->tag_id as $item) { 
    $arrItem = explode(':', $item); 
    // $arrItem[0] is your domain_id for the tag_id $arrItem[1] 
    // other logic here 
}