Я следил за учебником о knpsnappybundle, чтобы использовать pdf в symfony3, но проблема в том, что мне нужно передать массив значений на страницу pdf, чтобы я мог получить полную страницу, такую как оригинальная.Проблемы с созданием PDF Symfony 3
здесь контроллер:
public function pdfAction(){
$html = $this->renderView('@Recommendation/Recommendation/payment-successful.html.twig');
$filename = sprintf('test.pdf', date('Y-m-d'));
return new Response(
$this->get('knp_snappy.pdf')->getOutputFromHtml($html),
200,
[
'Content-Type' => 'application/pdf',
'Content-Disposition' => sprintf('inline; filename="%s"', $filename),
]
);
}
здесь картина нормальной страницы с кодом кнопки PRINT:
<a href="{{ path('payment_pdf') }}"><button>PRINT</button></a>
и маршрут:
payment_pdf:
path: /payment_pdf
defaults: { _controller: "RecommendationBundle:Recommendation:pdf"}
фотография моей исходной страницы: https://i.stack.imgur.com/3MBEt.png
и теперь картина PDF генерироваться: https://i.stack.imgur.com/rqs2x.png
вы видите, что таблица пуста!
жаль не может отображать изображения
файл веточка:
<head>
<script type="text/javascript" src="http://yourjavascript.com/12191816011/success.js"></script>
<link rel="shortcut icon" href="http://www.iconj.com/ico/f/k/fksvrhslsa.ico" type="image/x-icon" />
<script type="text/javascript" src="http://yourjavascript.com/11396113712/jquery-ajax-deprecated-dimensions-effects-offset-wrap-min.js"></script>
<link href="https://dl.dropboxusercontent.com/s/6dgxerbf1p6p8zl/styles.css" rel="stylesheet" type="text/css">
</head>
<html>
<div class="pf-checkout-container pf-success-page">
<h1 class="pf-green">Payment Successful</h1>
<p class="pf-processed-msg">Your payment has been processed! Details of the transaction are included below:</p>
<div class="pf-total-col">
<span class="pf-total-paid">Amount Paid</span>
<div class="pf-total-wrapper">
<span class="pf-total-label">Total:</span>
<span class="pf-total-amount pf-green" id="pf-total-amount">$00.00</span>
</div>
</div>
<div class="pf-success-details">
<p>Thank you for your purchase. Be sure to check us out on Facebook & Twitter!</p>
<div class="pf-success-info">
<ul>
<li>
<span class="pf-value-name">Name:</span>
<span id="pf-full-name" class="pf-value">{{ app.user.username }}</span>
</li>
<li>
<span class="pf-value-name">Auth Code:</span>
<span class="pf-value">{{app.user.salt}}</span>
</li>
</ul>
<br>
<br>
<table width="100%" border="1" cellpadding="10" style="font-family:'Myriad Pro' ">
<tr>
<th width="43%" align="left">Product Name</th>
<th width="10%">Unit Price</th>
<th width="10%">Quantity</th>
<th width="12%">Total</th>
</tr>
{% if livres is defined %}
{% for l in livres %}
<tr bgcolor="#FFFFFF" class=" product-detail">
<td valign="top">{{ l.titre }}</td>
<td align="center" valign="top">{{ l.prix }} DT</td>
<td align="center" valign="top">{{ l.quantite}}</td>
<td align="center" valign="top">{{ l.prix}} DT</td>
</tr>
{% endfor %}
{% endif %}
</table>
</div>
<!-- | PUT YOUR COMPANY LOGO HERE | -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
</div>
<div class="pf-payment-buttons">
<!-- | PUT YOUR LINK HERE | -->
<button>Back to Store</button>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
</div>
<a href="{{ path('payment_pdf') }}"><button>PRINT</button></a>
<div class="pf-footer">
<img src="https://stripe.com/img/v3/home/social.png" />
</div>
</div>
</html>
Мой Полный файл Контроллер:
class RecommendationController extends Controller
{
public function afficheAction()
{
$em = $this->getDoctrine()->getManager();
$recommendation = $em->getRepository("MainBundle:Recommendation")->findAll();
return $this->render("RecommendationBundle:Recommendation:book_detail.html.twig", array('recom' => $recommendation));
}
public function afficheparidAction($id)
{
$em = $this->getDoctrine()->getManager();
$em1 = $this->getDoctrine()->getManager();
$livre = $em->getRepository('MainBundle:Livre')->find($id);
$recommendation = $em1->getRepository('MainBundle:Recommendation')->findAll();
return $this->render('RecommendationBundle:Recommendation:book_detail.html.twig', array(
'livre' => $livre, 'recom' => $recommendation
));
}
public function AjoutAction($id)
{
$user = $this->getUser();
$em = $this->getDoctrine()->getManager();
$livre = $em->getRepository('MainBundle:Livre')->find($id);
$rec = new Recommendation();
if (isset($_POST['review'])) {
$rec->setIdUtilisateur($user);
$rec->setContenu($_POST['review']);
$rec->setIdLivre($livre);
$em->persist($rec);
$em->flush();
// вернуть $ this-> redirectToRoute ("рекомендация_bookid"); return $ this-> redirect ($ this-> generateUrl ('рекомендация_new', массив ('id' => $ id)));
}
$em1 = $this->getDoctrine()->getManager();
$recommendation = $em1->getRepository('MainBundle:Recommendation')->findAll();
return $this->render("RecommendationBundle:Recommendation:new_rec.html.twig", array('livre' => $livre, 'id' => $id, 'recom' => $recommendation));
}
public function DeleteAction($id_r, $id_l)
{
$em = $this->getDoctrine()->getManager();
$rec = $em->getRepository('MainBundle:Recommendation')->find($id_r);
$livre = $em->getRepository('MainBundle:Livre')->find($id_l);
$em->remove($rec);
$em->flush();
$em1 = $this->getDoctrine()->getManager();
return $this->redirect($this->generateUrl('recommendation_new', array('livre' => $livre, 'id' => $livre->getId())));
}
public function UpdateAction($id_r,$id_l)
{
$user = $this->getUser();
$em = $this->getDoctrine()->getManager();
$rec = $em->getRepository('MainBundle:Recommendation')->find($id_r);
$em->remove($rec);
$em->flush();
$livre = $em->getRepository('MainBundle:Livre')->find($id_l);
if (isset($_POST['review'])) {
$rec->setId($id_r);
$rec->setIdUtilisateur($user);
$rec->setContenu($_POST['review']);
$rec->setIdLivre($livre);
$em->persist($rec);
$em->flush();
return $this->redirect($this->generateUrl('recommendation_new', array('id' => $id_l)));
}
}
public function FindAction($id_l,$id_r)
{
$em = $this->getDoctrine()->getManager();
$em1 = $this->getDoctrine()->getManager();
$rec = $em->getRepository('MainBundle:Recommendation')->find($id_r);
$livre = $em1->getRepository('MainBundle:Livre')->find($id_l);
return $this->render('RecommendationBundle:Recommendation:edit_rec.html.twig', array('rec' => $rec, 'livre' =>$livre));
}
public function bookAction()
{
return $this->render('RecommendationBundle:Recommendation:book_detail.html.twig');
}
public function cartAction($id)
{if (!isset($_SESSION['cart'])){
$_SESSION['cart']=array();}
$em = $this->getDoctrine()->getManager();
$livre = $em->getRepository('MainBundle:Livre')->find($id);
// if (isset($_SESSION['book'])) {
$_SESSION['cart'][$id] = $livre;
$cart=$_SESSION['cart'];
возвращение $ this-> Render ('RecommendationBundle: Рекомендация: cart.html.twig', массив ('ID' => $ ID, 'ливров' => $ телега));
}
public function emptycartAction()
{
//if (isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
$cart=$_SESSION['cart'];
return $this->render('RecommendationBundle:Recommendation:cart.html.twig',array('livres'=>$cart));
}
public function removebookcartAction($id)
{
// {if (isset($_SESSION['cart'])){
unset($_SESSION['cart'][$id]);
$cart=$_SESSION['cart'];
// return $this->redirect($this->generateUrl('recommendation_cart_affiche', array('livres' => $cart)));
возвращение $ this-> redirectToRoute ('recommendation_cart_show', массив ('ливров' => $ телега)); // вернуть $ this-> render ('РекомендацияBundle: Рекомендация: cart.html.twig ', array (' id '=> 1,' livres '=> $ cart));
}
public function showAction(){
// if(!empty($_SESSION['cart']))
$livres=$_SESSION['cart'];
return $this->render('RecommendationBundle:Recommendation:cart.html.twig',array('livres'=>$livres));
}
public function okAction($cart){
$cart=$_SESSION['cart'];
return $this->render('RecommendationBundle:Recommendation:payment-successful.html.twig',array('livres'=>$cart));
}
public function pdfAction($cart){
// $cart=$_SESSION['cart'];
$html = $this->renderView('@Recommendation/Recommendation/payment_pdf.html.twig',array('livres'=>$cart));
$filename = sprintf('test.pdf', date('Y-m-d'));
return new Response(
$this->get('knp_snappy.pdf')->getOutputFromHtml($html),
200,
[
'Content-Type' => 'application/pdf',
'Content-Disposition' => sprintf('inline; filename="%s"', $filename),
]
);
}
Мои маршруты:
recommendation_bookid: путь:/book_detail/{идентификатор} по умолчанию: {_controller: "RecommendationBundle: Рекомендация: afficheparid"} рекомендация_book: путь:/book_detail defaults: {_controller: "РекомендацияBundle: Recom mendation: Affiche»} recommendation_new: путь:/book_detail/{ID}/новые по умолчанию: {_controller: "RecommendationBundle: Рекомендация: Ajout"} recommendation_delete: путь:/book_detail/{id_l}/{id_r}/удалить по умолчанию: {_controller: "RecommendationBundle: Рекомендация: Удалить"} recommendation_edit: путь:/book_detail/{id_l}/{id_r}/редактировать по умолчанию: {_controller: "RecommendationBundle: Рекомендация: Обновить"} recommendation_find: путь:/book_detail/{id_l}/{id_r}/find defaults: {_controller: "РекомендацияBundle: Рекомендация: Найти"} рекомендация_cart: путь:/book_detail/{ID}/корзина по умолчанию: {_controller: "RecommendationBundle: Рекомендация: В корзину"} recommendation_empty: путь:/emptycart по умолчанию: {_controller: "RecommendationBundle: Рекомендация: emptycart"} recommendation_cart_remove: путь:/remove_book/{ID} по умолчанию: {_controller: "RecommendationBundle: Рекомендация: removebookcart"} recommendation_cart_show: путь:/remove_book по умолчанию: {_controller: "RecommendationBundle: Рекомендация: показать"} payment_ok: путь :/payment_success defaults: {_controller: "РекомендацияBundle: Рекомендация на: ОК "}
payment_pdf: путь:/payment_pdf по умолчанию: {_controller: "RecommendationBundle: Рекомендация: pdf"}
Что нажав на 'PRINT' шоу? –
он показывает pdf-страницу , она берет меня на маршрут payment_pdf, который имеет действие для создания страницы pdf, как указано выше. –
Можете ли вы показать свой файл twig 'payment-successful.html.twig' до и после внесенных изменений. Или текущий, если у вас нет старого. –