¿Insertar un argumento variable en la función de una plantilla de Silverstripe?
-
26-10-2019 - |
Pregunta
Estoy usando un ejemplo de paginación del diseño de Balbus. En el .ss plantilla, hay una línea de código:
<% control ProductList.PaginationSummary(5) %>
Es posible usar una variable en lugar de codificar el valor 5
? Por ejemplo:
<% control ProductList.PaginationSummary(PSSize) %>
La variable PSSize
se define en el modelo y devolverá el número establecido en el CMS.
Solución
El lenguaje de plantilla SS 2.4 es muy limitado en términos de lo que puede hacer.
En este caso específico, puede intentar resolverlo en el controlador: intente ajustar el $resultSet
dentro de ProductListPage_Controller::ProductList
Para preprocesar el resumen de paginación al tamaño de contexto deseado, por lo que puede acceder a él más tarde desde la plantilla.
Prueba algo así:
$resultSet->AdjustedPaginationSummary = $resultSet->PaginationSummary($this->productsPerPage);
return $resultSet;
Y luego, en la plantilla, deberías poder hacer:
<% control ProductList.AdjustedPaginationSummary %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow