Как получить VOLT ШАБЛОН в переменной внутри CONTROLLER? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь создать PDF, используя DOMPdf, где мне нужен HTML шаблон вольт.Вольт шаблон генерируется динамически.Так, как я могу получить html шаблона напряжения в моем контроллере как переменную.

MyController Action:

public function printEvaluationQuizResultAction() {

        // I WANT TO GET HTML FROM a TEMPLATE in $html variable 
        //$html = $this->request->getPost('html');

        // instantiate and use the dompdf class
        $dompdf = new Dompdf();

        $dompdf->loadHtml($html);

        // (Optional) Setup the paper size and orientation
        $dompdf->setPaper('A4', 'landscape');

        // Render the HTML as PDF
        $dompdf->render();

        // Output the generated PDF to Browser
        $dompdf->stream();
    }

Шаблон:

<div id="print_result" style="display:none">

    <div class="row">
       <!-- Start of Symptoms Card/Table/Section -->
       <div class="col-md-6">
             <div class="card">
                 <div class="card-header">
                 <div class="text-center"><span class="section-heading-text">SYMPTOMS</span></div>
             </div>
             <?php if($quizDataArray['symptoms']): ?>
                 {% for key, symptom in quizDataArray['symptoms'] %}
                     <div class="col-md-12 card-box">
                         <div class="card-body">
                               <h5 class="card-title">{{ symptom['title'] }}</h5>
                               <?php if (isset($symptom['results'])): ?>
                                   <h6 class="card-subtitle mb-2 text-muted">
                                       {% for key, result in symptom['results'] %}
                                          <?php  $causeId = key($result); ?>
                                            {{ resultKeyArray[key] }} <?php if($causeId) { ?> {{ result[causeId] }} <?php } ?>
                                       {% endfor %}
                                   </h6>
                               <?php endif;?>
                         </div>
                     </div>
                 {% endfor %}
             <?php endif; ?>

             <div class="text-center"><span class="section-heading-text">DR.  RECOMMENDED PRODUCTS</span></div>
             <?php if($thingsToTry): ?>
                 <?php foreach ($thingsToTry as $remedy): ?>
                  <div class="col-md-12 card-box">
                      <div class="card-body">
                          <!-- Todo: To print image here -->
                        <div class="col-md-8">
                          <div class="info-box">
                            <h5><?php echo $remedy['title'] ?></h5>
                            <p>
                                <?php echo $remedy['description'] ?>
                            </p>
                          </div>
                        </div>
                      </div>
                      <div class="clear"></div>
                  </div>
                <?php endforeach; ?>
            <?php endif; ?>

            <div class="text-center"><span class="section-heading-text">Health Food Store Recommendations</span></div>
            <?php if($thingsToTry): ?>
                {% for key, remedy in thingsToTry %}
                    <div class="remedy-box">
                        <h5><strong>*{{ remedy['title'] }}</strong></h5>
                    </div>
                {% endfor %}
            <?php endif; ?>

       </div>
    </div><!-- End of Symptoms Card/Table/Section -->

</div>

Я хотел бы добавить больше деталей, если требуется какое-либо объяснение, просто дайте мне знать.

Спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Прежде всего вы должны использовать вольт в ваших шаблонах.Прямо сейчас вы используете один раз php один раз вольт, даже если вы можете использовать везде вольт в этом примере.

Чтобы получить html от вольт, я использую, например, контроллер:

$view = $this->view;
$view->start();
$view->render('mail', 'exam');
$view->finish();
html = $view->getContent();
...