2016-08-01 6 views
1

Ich habe eine Reihe von Ergebnissen (z. B. [1,2,3,4,5,6,7,8,9,10,11]).Wie Ergebnisse in 3 Spalten aufgeteilt werden

, die ich als 1 Zeile mit 3 Spalten angezeigt werden sollen

1|5|9 
2|6|10 
3|7|11 
4|8| 

Was ich 1 Zeile mit 4 Spalten

1|4|7 
2|5|8 
3|6|9 

10| 
11| 

Bis ich ein 12.-Objekt hinzufügen, dann werde ich 1 Zeile mit 3 Spalten

1|5|9 
2|6|10 
3|7|11 
4|8|12 

Mein Code in Blattvorlage

<!-- partials/tables/table_list.blade.php --> 

@section('tables') 
<?php $chunkSize = floor(count($tables)/3); ?> 
<section id="tables-overview"> 
    <div class="row"> 
     @foreach ($tables->chunk($chunkSize , 1) as $chunk) 
     <div class="col-md-4"> 
      @include('partials.tables.table_chunk') 
     </div> 
     @endforeach 
    </div> 
</section> 
@endsection 

<!-- partials/tables/table_chunk.blade.php --> 

<table class="table table-responsive"> 
<thead> 
    <tr> 
     <th class="text-center">@lang('table.identifier')</th> 
     <th class="text-center">@lang('table.property')</th> 
     <th class="text-center"> 
      @permission('manage-tables') 
       <a href="{{ route('CreateTable') }}">@lang('action.create')</a> 
      @endpermission 
     </th> 
    </tr> 
</thead> 
<tbody> 
    @foreach ($chunk as $table) 
    <tr> 
     <td class="text-center">{{ $table->getId() }}</td> 
     <td class="text-center">{{ $table->getProperty() }}</td> 
     <td class="text-center"> 
      @permission('manage-tables') 
       <a class="btn btn-primary" href="{{ route('UpdateTable', ['id' => $table->getId()]) }}">@lang('action.update')</a> 
      @endpermission 
     </td> 
    </tr> 
    @endforeach 

</tbody> 
</table> 

Wenn die Anzahl der $ -Tabellen durch 3 (Anzahl der Spalten, die ich will) geteilt werden kann, bekomme ich 3 Chunks. Wenn nicht, bekomme ich 3 Stücke + die restlichen 1 oder 2 Objekte, die beide in eine 4. Spalte gelegt werden. Ich kann sie horizontal als getan here platzieren, aber ich finde das "ungerade". Beim Lesen einer Liste liest man zuerst von oben nach unten und dann von links nach rechts.

UPDATE Ich habe auch versucht ceil() verwendet als von Huzaib Shafi vorgeschlagen. Aber dann bekomme ich

was auch nicht 100% was ich wollte, aber ist ziemlich nah dran. Ich werde den Vorschlag von Homam Alhaytham nächsten versuchen.

Antwort

0

Wenn Sie floor das Divisionsergebnis, erhalten Sie die niedrigere Zahl.

Erläuterung: Boden (11/3) = 3. Daher Ihr Ergebnis 3 zu einem Zeitpunkt gestückelt wird (was, [3,3,3,2]), jedoch müssen wir [4,4,3 ].

Sie müssen also ceil es. Geben Sie 4, also das Ergebnis.

<?php $chunkSize = ceil(count($tables)/3); ?> 
-2

Verwenden Sie array_chunk.

Angenommen Sie haben die folgende Array:

[ 
    1, 
    2, 
    3, 
    4, 
    5, 
    6, 
    7, 
    8, 
    9, 
    10, 
    11, 
]; 

In Ihrem .blade.php Datei, die Sie so etwas tun kann:

@section('tables') 
<section id="tables-overview"> 
    <div class="row"> 
     @foreach (array_chunk($tables, 3) as $chunk) 
     <div class="col-md-4"> 
      @foreach($chunk as $key => $value) 
      //@include('partials.tables.table_chunk') 
      // No need to include anything here 
      // just write your table instead of including 
      @endforeach 
     </div> 
     @endforeach 
    </div> 
</section> 
@endsection 
+0

Ich teile meine Ansichten in kleinere Teiltöne, es macht sie für mich lesbarer. Und einige dieser kleinen Teiltöne sind in mehr als einer Ansicht enthalten. –

0

, nachdem Sie $ Artikel erhalten, indem Daten in der Datenbank holen und Schleife Beispiel

$c=0; 
echo '<div class="row">'; 
while(bla bla bla ..){ 
// counter 
$c++; 
echo '<div class="col-md-4"> 
some thing 
     </div>'; 
if(fmod($c,3)==0){ 
echo '</div><div class="row">'; 
} 
} 

echo '</div>'; 

hier i fmod ($ c, 3) verwendet verwenden 3 Anzahl von Ihren Spalten und fmod return 0 if $ c 6,9,12,15,18 .....

+0

Ich habe auch darüber nachgedacht, es auf diese Weise zu tun, denke nur, dass die Chunk-Methode sauberer, kürzer und einfacher ist. Unabhängig davon könnte ich es einfach so machen. –

Verwandte Themen