[Risolto][Symfony2] KnpPaginator

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Xeyos
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 463
Iscrizione: lunedì 26 maggio 2008, 14:16

[Risolto][Symfony2] KnpPaginator

Messaggio da Xeyos »

Come posso usare KnpPaginetor dopo il submit di un form?

Cioè mi funziona tutto tranne l'impaginazione,
ovvero faccio sumbit del mio form di ricerca, vedo i risultati in una tabella ma quando mi sposto di pagina con il pagination ritorno al form.

Codice: Seleziona tutto

 /**
     * @Route("/searchAction/{page}", name="dataset_search", defaults={"page" = 1})
     * @Route("/page/{page}", name="dataset_page_index", requirements={"page" : "\d+"})
     *
     */
    public function searchAction(Request $request, $page){
        $form = $this->createFormBuilder()
            ->add('lat', NumberType::class, array(
                'label' => 'latitude',
                'required'    => false,
                ))
            ->add('lon', NumberType::class, array(
                'label' => 'longitude',
                'required'    => false,
            ))
            ->add('alt', NumberType::class, array(
                'label' => 'altitude',
                'required'    => false,
            ))
            ->add('range', ChoiceType::class, array(
                'label' => 'range',
                'choices'  => array(
                    '1' => '1Km',
                    '2Km' => 2,
                    '3Km' => 3,
                    '5Km' => 5,
                    '10Km' => 10,
                )))
            ->add('dataset_category',EntityType::class,array(
                'class' => 'AppBundle\Entity\DatasetCategory',
                'choice_label' => 'name',
                'expanded' => false,
                'multiple' => false,
                'label' => 'dataset_category',
                'required'    => false,
                'empty_data'  => null
            ))
            ->add('acquisition_start',DateTimePickerType::class,array(
                'label' => 'label.acquisition_start',
                'required'    => false,
            ))
            ->add('acquisition_end',DateTimePickerType::class,array(
                'label' => 'label.acquisition_end',
                'required'    => false,
                ))
            ->getForm();

        $form->handleRequest($request);
        $em = $this->getDoctrine()->getManager();
        $qb = $em->createQueryBuilder();

        if ($form->isSubmitted() && $form->isValid()) {
           ......ESECUZIONE QUERY.
            $query = $qb->getQuery();


            $paginator  = $this->get('knp_paginator');
            $pagination = $paginator->paginate(
                $query,
                $request->query->getInt('page', $page),
                1
            );


            return $this->render('dataset/result.html.twig', array('pagination' => $pagination));
        }

            // data is an array with "name", "email", and "message" keys
            $data = $form->getData();
        return $this->render('dataset/search.html.twig', array(
            'search_form'   => $form->createView(),
        ));
    }
Ultima modifica di Xeyos il martedì 26 gennaio 2016, 11:42, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Symfony2] KnpPaginator

Messaggio da Zoff »

Puoi postare la view?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Xeyos
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 463
Iscrizione: lunedì 26 maggio 2008, 14:16

Re: [Symfony2] KnpPaginator

Messaggio da Xeyos »

Ecco qui

Codice: Seleziona tutto

{% extends 'index.html.twig' %}

  {% block admin_content %}
<table class="table table-striped">
    <thead>
    <tr>
        <th>{{ 'label.name'|trans }}</th>
        <th>{{ 'dataset_category'|trans }}</th>
        <th><i class="fa fa-user"></i> {{ 'label.owner'|trans }}</th>
        <th><i class="fa fa-calendar"></i> {{ 'label.created_at'|trans }}</th>
        <th><i class="fa fa-cogs"></i> {{ 'label.actions'|trans }}</th>
    </tr>
    </thead>
    <tbody>
    {% for dataset in pagination %}
        <tr>
            <td><a href="{{ path('dataset_show', { id: dataset.id }) }}">{{ dataset.name}}</a></td>
            <td>{{ dataset.datasetCategory.name}}</td>
            <td>{{ dataset.owner }}</td>
            <td>{{ dataset.creationdate|localizeddate('long', 'medium') }}</td>
            <td>Download</td>
        </tr>
    {% else %}
        <tr>
            <td colspan="4" align="center">{{ 'post.no_posts_found'|trans }}</td>
        </tr>
    {% endfor %}
    </tbody>
</table>
      <div class="navigation">
          {{ knp_pagination_render(pagination) }}
      </div>

  {% endblock %}
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Symfony2] KnpPaginator

Messaggio da Zoff »

Ok, tu visualizzi il risultato solo se "$form->isSubmitted()" quindi mi sembra normale.

O salvi la ricerca in sessione oppure ti porti dietro tutti i parametri della ricerca. In ogni caso devi cambiare l'if
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Xeyos
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 463
Iscrizione: lunedì 26 maggio 2008, 14:16

Re: [Symfony2] KnpPaginator

Messaggio da Xeyos »

Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4846610#p4846610][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ok, tu visualizzi il risultato solo se "$form->isSubmitted()" quindi mi sembra normale.

O salvi la ricerca in sessione oppure ti porti dietro tutti i parametri della ricerca. In ogni caso devi cambiare l'if
Ok capito, ma alla fine mi sa che non potrò applicarlo, perchè tanto devo filtrare i risultati della prima query con una latra query fatta con sql nativo(devo usare GIS) e quindi come risultato avrò un array classico e non un array di oggetti di una determinata entità quindi il paginator mi sa che non posso usarlo...

Però è utile aver capito cosa dovrei cambiare.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Symfony2] KnpPaginator

Messaggio da Zoff »

La query va ri-eseguita ad ogni caricamento, per "salvare la ricerca in sessione" intendevo i parametri non i dati restituiti.
Non ha alcun senso salvare i dati in sessione.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 10 ospiti