¿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étodo setDatagrid().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