Hola buenas,
La verdad es que he invertido bastante tiempo buscando y aún no he conseguido hacer que el KnpPaginator funcione en una plantilla de PHP. Copié todo el template.twig
y lo llevé a PHP cambiando esto:
{% if pageCount > 1 %} <div class="pagination"> {% if first is defined and current != first %} {{ path(route, query|merge({(pageParameterName): first})) }}"><<</a> </span> {% endif %} {% if previous is defined %} {{ path(route, query|merge({(pageParameterName): previous})) }}"><</a> </span> {% endif %} {% for page in pagesInRange %} {% if page != current %} {{ path(route, query|merge({(pageParameterName): page})) }}">{{ page }}</a> </span> {% else %} {{ page }}</span> {% endif %} {% endfor %} {% if next is defined %} {{ path(route, query|merge({(pageParameterName): next})) }}">></a> </span> {% endif %} {% if last is defined and current != last %} {{ path(route, query|merge({(pageParameterName): last})) }}">>></a> </span> {% endif %} </div> {% endif %}
por esto:
<?php if ($pageCount > 1): ?> <div class="pagination"> <?php if ($first && $current != $first): ?> <?php echo $view['router']->generate('route', array_merge(array('pageParameterName' => 'first'))) ?>"><<</a> </span> <?php endif ?> <?php if ($previous): ?> <?php echo $view['router']->generate('route', array_merge(array('pageParameterName' => 'previous'))) ?>"><</a> </span> <?php endif ?> <?php foreach ($pagesInRange as $key => $page): ?> <?php if ($page != $current ):?> <?php echo $view['router']->generate('route', array_merge(array('pageParameterName' => 'page'))) ?>"><?php echo $page ?></a> </span> <?php else: ?> <?php echo $page ?></span> <?php endif; ?> <?php endforeach; ?> <?php if (defined($next)): ?> <?php echo $view['router']->generate('route', array_merge(array('pageParameterName' => 'next'))) ?>">></a> </span> <?php endif; ?> <?php if (defined($last) && $current != $last): ?> <?php echo $view['router']->generate('route', array_merge(array('pageParameterName' => 'last'))) ?>">>></a> </span> <?php endif; ?> </div> <?php endif; ?>
Pero me está generando errores:
"Notice: Undefined variable: previous in K:\xampp\htdocs\asaptimesheets\src\Asap\TimesheetsBundle\Resources\views\Default\sliding.html.php line 9"
De antemano gracias
Respuestas
El código PHP esta bien, y lo que te tira no es un error, es un "Notice". En la mayoría de los servidores no te larga ese notice. Lo tienes que configurar bien en el servidor modificando el php.ini
.
Si no tienes acceso al php.ini
puedes agregar lo siguiente al comienzo de los archivos app.php
y app_dev.php
:
<?php error_reporting(E_ALL ^ E_NOTICE); // ...
Busca en Google error_reporting. O también puedes hacer:
$previous= isset($previous) ? $previous: null; <?php if ($previous): ?> // o para tu caso simplemente <?php if (isset($previous)): ?>
@AjPZZO
Muchas Gracias por tu pronta respuesta @AjPZZO sin embargo ahora tengo problemas con la url, es seguro que mi conversión de la expresión twig a php no e fue la correcta. Actualmente hice lo siguiente, cambie esto:
<a href="{{ path(route, query|merge({(pageParameterName): previous})) }}"><</a>
A esto:
<a href="<?php echo $view['router']->generate('route', array_merge(array('pageParameterName' => 'page'), true)) ?>"><?php echo $page ?></a>
Me podrian ayudar a hacer la conversion funcional?, se que mi error esta en la expresión twig query|merge que yo cambie a array_merge() en php pero no esta funcionando.
Gracias de antemano
@ponceelrelajado
Buenas ya conseguí la solución, Gracias a Dios. Posteo el sliding.html.php
por si alguien mas lo requiere:
<?php if ($pageCount > 1): ?> <div class="pagination"> <?php if (isset($first) && $current != $first): ?> <a href="<?php echo $view->escape($view['router']->generate($route, \array_merge($query, [$pageParameterName => $first]))); ?>">«</a> <?php endif; ?> <?php if (isset($previous)): ?> <a href="<?php echo $view->escape($view['router']->generate($route,\array_merge($query, [$pageParameterName => $previous]))); ?>" rel="prev">‹</a> <?php endif; ?> <?php foreach ($pagesInRange as $page): ?> <?php if ($page != $current): ?> <a href="<?php echo $view->escape($view['router']->generate($route, \array_merge($query, [$pageParameterName => $page]))); ?>"><?php echo $page; ?></a> <?php else: ?> <?php echo $page; ?></span> <?php endif; ?> <?php endforeach; ?> <?php if (isset($next)): ?> <a href="<?php echo $view->escape($view['router']->generate($route, \array_merge($query, [$pageParameterName => $next]))); ?>" rel="next">›</a> <?php endif; ?> <?php if (isset($last) && $current != $last): ?> <a href="<?php echo $view->escape($view['router']->generate($route, \array_merge($query, [$pageParameterName => $last]))); ?>">»</a> <?php endif; ?> </div> <?php endif; ?>
Saludos!
@ponceelrelajado
¡Muchas gracias por aportar la solución! Seguro que es útil para cualquiera que necesite hacer esta misma conversión. Gracias.
@javiereguiluz