Загрузите карточку в laravel с qrcode и загрузите изображение - PullRequest
0 голосов
/ 16 марта 2019

Я создал карточку с изображением и QR-кодом. Я пытался загрузить его в формате PDF с dompdf, также с snappy, но моя проблема в том, что я использую много начальной загрузки. Я пытался изменить время выполнения в PHP ini, но снова карта загружается без изображения. Я пробовал это с моим кодом ниже:

Мой контроллер:

 public function downloadPDF()
{
    $cards = Card::all(); 

    foreach ($cards as $card) {
        if ($cards->last()== $card) {

            $data = [
                'image'=>'images/patient2.jpg',
                'qrcode'=>'generated_qrcodes/'.$card->cin.'.png',
                'nom'=>$card->nom,
                'cin'=>$card->cin,
                'prenom'=>$card->prenom,
                'dateNaissance'=>$card->dateNaissance,
                'dateAffection'=>$card->dateaffection

            ];
        }
    }
    $pdf = PDF::loadView('cards.cardPdf',$data);
    return $pdf->download('card.pdf');

}

Мой клинок:

<div class="card w-50 ">        
    <div class="card-body bg-light ">
        <div id="id_div">
            <img class="carte" src="{{ asset($image) }}">                                                                      
        </div>
        <div>            
            <h5 class="card-title text-black"> Nom & Prénom :{{ $nom }} {{ $prenom }} </h5>
            <h5 class="card-title text-black"> Date Naissance : {{ $dateNaissance }}</h5>
            <h5 class="card-title text-black"> CIN : {{ $cin }}</h5>
            <h5 class="card-title text-black"> Date d'affectation : {{ $dateAffectation }}</h5>      
        </div>
        <div class=" text-right">
            <br>                    
            <img src="{{ asset( $qrcode) }}" alt="">                                                                                                          
        </div>
    </div>                     

1 Ответ

0 голосов
/ 22 марта 2019

Хорошо, поэтому, если я правильно понимаю, вы хотите, чтобы только последняя карта отображалась в pdf?

Дело в том, что вы объявляете $data внутри if внутри forпетля.Таким образом, переменная $data недоступна за ее пределами.Кроме того, если бы не цикл if, цикл for каждый раз переназначал бы переменную.Я также думаю, что вы должны использовать методы Eloquent.И почему вы выбираете все карты, когда собираетесь использовать только последнюю?

Кратчайшее решение, если нужен только последний элемент:

$cards = Card::latest()->first(); 

$data = [
    'image'=>'images/patient2.jpg',
    'qrcode'=>"generated_qrcodes/{$card->cin}.png",
    'nom'=>$card->nom,
    'cin'=>$card->cin,
    'prenom'=>$card->prenom,
    'dateNaissance'=>$card->dateNaissance,
    'dateAffection'=>$card->dateaffection
];

$pdf = PDF::loadView('cards.cardPdf', $data);
return $pdf->download('card.pdf');
...