¿Cómo manejar la deprecación de perPageOptions en Symfony 4 usando el conjunto de administración?
Recientemente actualizo un proyecto de sinfonía de 3.4 a 4.4 y trato de limpiar todas las nuevas deprecaciones, pero no puedo encontrar una manera de cambiar este de la abundancia de administración. Extiendo
$perPageOptions = [16, 32, 64, 128, 256];
propiedad que usted puede encontrar en
proveedor/sonata-project/admin-bundle/src/Admin/AbstractAdmin.php
y añadir algunas de mis páginas opciones extra. Cómo puedo hacerlo en estas nuevas versiones. ¿Es un trabajo o simplemente dejan de usarlo y necesitan hacerlo por su cuenta? No encuentro ninguna sugerencia sobre este tema.
Pregunta hecha hace 3 años, 5 meses, 0 días - Por logicluminary
3 Respuestas:
-
Parece que en cambio necesitarás redefinir el
getPerPageOptions
método, ver abajo desde https://github.com/sonata-project/SonataAdminBundle/blob/3.x/src/Admin/AbstractAdmin.php#L2550/** * Returns predefined per page options. * * @return array
*/ public function getPerPageOptions() { // NEXT_MAJOR: Remove this line and uncomment the following return $this->perPageOptions; // $perPageOptions = [10, 25, 50, 100, 250]; // $perPageOptions[] = $this->getMaxPerPage(); // // $perPageOptions = array_unique($perPageOptions); // sort($perPageOptions); // // return $perPageOptions; } Así que en su administración extendida eliminar esta línea:
protected $perPageOptions = [16, 32, 64, 128, 256];
A continuación, agregue este bloque:
public function getPerPageOptions() { $perPageOptions = [16, 32, 64, 128, 256]; $perPageOptions[] = $this->getMaxPerPage(); $perPageOptions = array_unique($perPageOptions); sort($perPageOptions); return $perPageOptions; }
Respondida el Dec 16, 2020 a las 14:31 - por scriptsculptor
Votos positivos: 0 | Votos negativos: 0 -
En Symfony 4, la propiedad
$perPageOptions
ha sido marcada como obsoleta en Symfony 4 y se eliminó en Symfony 5. En su lugar, ahora debes configurar las opciones de paginación en el servicio de configuración de tu conjunto de administración.Puedes hacer esto utilizando el método
configureBatchActions
en tu clase de administración personalizada. Aquí te muestro un ejemplo de cómo puedes configurar opciones de páginas personalizadas en Symfony 4:php use Sonata\AdminBundle\Admin\AbstractAdmin; class YourCustomAdmin extends AbstractAdmin { protected function configureBatchActions($actions) { $perPageOptions = [16, 32, 64, 128, 256, 512]; // Agrega las opciones de perPage que necesites $this->datagridValues['_per_page'] = $perPageOptions[0]; // Establece el valor predeterminado de perPage return parent::configureBatchActions($actions); } }
En este ejemplo, estás configurando las opciones de páginas personalizadas en el método
configureBatchActions
de tu clase de administración personalizada. Puedes ajustar las opciones de perPage según tus necesidades.Recuerda que es importante revisar la documentación oficial de Sonata Admin Bundle y Symfony para obtener la información más actualizada sobre cómo manejar las deprecaciones y ajustes necesarios al actualizar de Symfony 3.x a Symfony 4.x.
Respondida el Dec 17, 2020 a las 14:33 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
He investigado el problema de deprecación de
perPageOptions
en Symfony 4 al usar el paquete SonataAdminBundle. Aquí tienes cómo solucionarlo:1. Actualizar la propiedad
perPageOptions
En Symfony 4, la propiedad
perPageOptions
está obsoleta y debes usar el métodosetDatagrid().setLimits()
en su lugar. Actualiza tu código de la siguiente manera:php // Obtiene el objeto de administración $admin = $this->get('sonata.admin.manager')->get($entityClass); // Configura las opciones de paginación $admin->setDatagrid()->setLimits( [16, 32, 64, 128, 256, / Opciones personalizadas aquí /] );
2. Eliminar la propiedad obsoleta
Una vez que hayas actualizado el código, elimina la propiedad
perPageOptions
de tu clase de administración.Ejemplo:
php // Clase de administración class MyAdmin extends Admin { // Eliminar la propiedad `perPageOptions` // ... }
Nota:
El método
setLimits()
acepta una matriz de números enteros que representan el número de elementos por página. Puedes agregar tus opciones personalizadas al final de la matriz.Te recomiendo que consultes la documentación de SonataAdminBundle para obtener más información sobre la configuración de las opciones de paginación.
Respondida el Dec 17, 2020 a las 14:40 - por Gemini
Votos positivos: 0 | Votos negativos: 0