Петли, что и как использовать? (для, пока и foreach) - PullRequest
0 голосов
/ 28 августа 2018

Что случилось, ребята!

У меня есть проблема, и я не могу придумать решение.

Мне нужно сделать отчет, используя DOMPDF. В этом отчете мне нужно распечатать информацию о сотрудниках. На каждой странице должен быть заголовок для подписи ответственного лица.

У меня есть группа сотрудников. Они разделены по отделам.

Мне нужен цикл "разорвать страницу", когда я меняю отдел сотрудника или когда я печатаю 15 сотрудников. После этого цикл должен напечатать остальных сотрудников и выполнить те же правила, если вы снова измените отдел сотрудника или уже было напечатано 15 сотрудников.

<!DOCTYPE html>
<html lang="{{ config('app.locale') }}">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Relatório Geral</title>
    <style>

        body {
            margin-top: -20px;
            margin-left: -20px;
            margin-right: -5px;
            padding:0
        }

        .borda3 {
            border:1px solid #999;
            padding: 5px;
        }

        #borda2 td {
            border: 1px solid #999;
            border-collapse: collapse;
            width: auto;

        }

        .centro {
            text-align: center;
        }

        .tabela {
            width: 100%;
        }

        span {
            font-size: 100px;
        }

        td {
            font-size: 11px;
        }

        html {
            font-family: sans-serif;
        }

        #customers {
            font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
            border-collapse: collapse;
            width: 100%;
        }

        #customers td, #customers th {
            border: 1px solid #ddd;

        }

        #customers tr:nth-child(even){background-color: #f2f2f2;}

        #customers tr:hover {background-color: #ddd;}

        #customers th {
            text-align: center;
            font-size: 9px;
        }

        #customers td {
            text-align: left;
            font-size: 10px;
        }

        #customers a {
            font-size: 10px;
        }

        .nome{
            width: 180px;
        }

        .matricula{
            width: 15px;
        }

        .numeros{
            width: 15px;
        }

        .logo{
            padding-left: 50px;

        }

        .logo a strong{
            font-size: 15px;
            text-align: center;
        }

        .logo a{
            font-size: 12px;
        }

        .assinatura{
            font-size: 9px;
            margin-left: 60px;

        }
    </style>
</head>
{{--beginning of the loop--}}
<body>
    <table class="tabela borda3">
        <tr>
            <td width="40%" class="centro">
                <table class="logo">
                    <tr>
                        <td>
                            <img style="margin-left:20px; margin-top: -20px;width:220px; height: 65px;" src="img/logo_sarh.jpg">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for=""><a><strong> </strong></a></label><br>
                        </td>
                    </tr>
                    <tr>
                        <td><a>Referência:</a></td>
                    </tr>
                    <tr>
                        <td><a>Período:</a></td>
                    </tr>
                </table>
            </td>
            <td width="40%" class="centro">
                <table class="assinatura">
                    <tr>
                        <td style="height: 30px; text-align: left"><label for="">Em: _____/ _____/___________</label></td>
                    </tr>
                    <tr>
                        <td style="padding-bottom: -20px; height: 50px; text-align: center">
                            <label for="">____________________________________________</label><br>
                         <label style="font-size: 10px" for=""> SUPERVISOR</label>
                        </td>
                    </tr>
                    <tr>
                        <td style="height: 30px; text-align: left"><label for="">VISTO</label></td>
                    </tr>
                    <tr>
                        <td style="padding-bottom: -10px; height: 50px; text-align: center">
                            <label for="">____________________________________________</label><br>
                            <label style="font-size: 10px" for=""> SECRETÁRIO(A)</label>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
    <br>
    <table id="customers">
        <tr>
            <th class="nome">Nome</th>
            <th class="matricula">Matrícula</th>
            <th class="numeros">Dias</th>
            <th class="numeros">Faltas</th>
            <th class="numeros">Vac</th>
            <th class="numeros">LSV</th>
            <th class="numeros">L M</th>
            <th class="numeros">Aci. Trab</th>
            <th class="numeros">Adi. Not</th>
            <th class="numeros">H.E Normal D</th>
            <th class="numeros">H.E Normal N</th>
            <th class="numeros">H.E Dom/Fer. D</th>
            <th class="numeros">H.E Dom/Fer. N</th>
            <th class="numeros">Ins.</th>
        </tr>
        {{--beginning of the loop--}}
        <tr>
            <td style="height: 20px;"><a>Augusto Damasceno Pedrozo</a></td>
            <td style="height: 20px;"><a>12345678</a></td>
            <td style="height: 20px;"><a>30</a></td>
            <td style="height: 20px;"><a>2</a></td>
            <td style="height: 20px;"><a>2</a></td>
            <td style="height: 20px;"><a>2</a></td>
            <td style="height: 20px;"><a>2</a></td>
            <td style="height: 20px;"><a>2</a></td>
            <td style="height: 20px;"><a>2</a></td>
            <td style="height: 20px;"><a>20,02</a></td>
            <td style="height: 20px;"><a>20,02</a></td>
            <td style="height: 20px;"><a>20,02</a></td>
            <td style="height: 20px;"><a>20,02</a></td>
            <td style="height: 20px;"><a>20</a></td>
        </tr>
        <tr>
            <td style="height: 20px;" colspan="14">Observação:</td>
        </tr>
        {{--end of the loop--}}
    </table>
</body>
{{--end of the loop--}}
</html>

Может ли кто-нибудь дать мне какое-то указание, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 29 августа 2018

Я думаю, вы хотите что-то вроде этого:

@foreach($customers as $customer)
    @while ($loop->index <= 15)                   
        <!-- build table row here -->     

    @endwhile                             
    <!-- page break -->                                          
@endforeach
  • в laravel есть переменная цикла
  • эта переменная отслеживает текущий индекс и некоторые другие вещи
  • Вы можете проверить, меньше или равен текущий индекс 15, выполнить разрыв страницы, перейти к следующему, проверить, не изменился ли отдел, как и раньше, повторить

для изменений отдела вы можете установить переменную, которая содержит текущий отдел, и сравнить ее в цикле, например:

@if($current_dep !== $cust->department)
    <!-- page break -->
@endif

не забудьте проверить последнюю запись

@while(!$loop->last)

@endwhile

дополнительная информация о переменной $loop: https://laravel.com/docs/5.7/blade#the-loop-variable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...