0
votes

I am using domPDF to generate PDFs on certain pages of my site

The problem I am having is that it won’t allow me to use repeater values (via any sort of loop), it doesn’t seem to want to generate them when the PDF is created.

If I call the repeater field itself as a variable, it returns ‘array’, so I assume it’s possible to get it working, somehow.

It appears the repeaters first need to be generated and then included (perhaps as a variable?), but I’m unsure of how to do this.

Does anyone have any idea of how I can get this to work?

This is my ACF repeater code:

<?php if( have_rows('team_contact_details') ): ?>
    <div class="profile-item">
        <ul class="list-contact">
        <?php while( have_rows('team_contact_details') ): the_row(); ?>
            <li>
                <div class="list-contact-letter">
                    <?php the_sub_field("contact_label"); ?>
                </div>
                <div class="list-contact-detail">
                    <?php
                        if(get_sub_field('contact_link') == 'phone' ) {
                            echo '<a href="tel:' . get_sub_field("phone_number") . '">' . get_sub_field("phone_number") . '</a>';
                        } else if(get_sub_field('contact_link') == 'email' ) {
                            echo '<a href="mailto:' . get_sub_field("email_address") . '">' . get_sub_field("email_address") . '</a>';
                        }
                    ?>
                </div>
            </li>
        <?php endwhile; ?>
        </ul>
    </div>
<?php endif; ?>

This is my domPDF code:

    //Print PDF
    require_once get_template_directory() . '/dompdf/autoload.inc.php';
    use Dompdf\Dompdf; 

    $content = '
    <html>
        <head></head>
        <body>
        
            <div class="person">
                <img src="' . get_field('page_image') . '"/>
            </div>
  
            <h1>' . get_the_title() . '</h1>

            <div class="pdf-label">' . get_field('team_academic') . '</div>
            <div class="pdf-label">' . get_field('team_position') . '</div>

            
            <<<< Attempting to put repeater values here as unordered list >>>>
            
                
        </body>
    </html>
    ';
     
    // instantiate and use the dompdf class
    $dompdf = new Dompdf(array(
        'enable_remote' => true
        )
    );
    $dompdf->loadHtml($content);
     
    // (Optional) Setup the paper size and orientation
    $dompdf->set_paper( 'letter' , 'portrait' );
     
    // Render the HTML as PDF
    $dompdf->render();
     
    $doctitle = get_the_title();
    $dompdf->stream($doctitle);
     

Thanks

1

1 Answers

0
votes

I got it. FYI, this was how:

        if( have_rows('team_contact_details')) :
            while(have_rows('team_contact_details')) : the_row();
                $content .= '<h3>'. get_sub_field('contact_label') .'</h3>';
                
                if(get_sub_field('contact_link') == 'phone') {
                    $content .= '<div>'. get_sub_field('phone_number') .'</div>';
                } else {
                    $content .= '<div>'. get_sub_field('email_address') .'</div>';
                }
            endwhile;
        endif;