2017-09-12 3 views
0

J'utilise Knp paginator sur un projet symfony 2.3 et le projet est nouveau pour moi, donc les contrôleurs sont un peu bizarres à utiliser.Utilisation de Knp paginator sur symfony 2.3 avec un contrôleur bizarre

J'essaye de l'installer mais il y a des choses qui bloquent toujours de le faire fonctionner.

que je suis ce tutorial actually

et voici mon code dans mon contrôleur

private function resultsAction(Request $request, User $user, $type, $archive) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $results = $em->getRepository("randomRepo")->findByTypeAndPro($type, $user, $archive); 

    /** 
     * @var $paginator \Knp\Component\Pager\Paginator 
     */ 
    $paginator = $this->get('knp_paginator'); 
    $results = $paginator->paginate(
     $results, 
     $request->query->getInt('page',1), 
     $request->query->getInt('limit',5) 
    ); 


    return array("results" => $results, "archive" => $archive); 
} 

public function offerAction(User $user, $archive = false) 
{ 
    return $this->resultsAction($user, Operation::OFFER, $archive); 
} 

Mon espace de noms et en utilisant la classe:

namespace ST\BackofficeBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
use ST\UserBundle\Entity\Operation; 
use ST\UserBundle\Entity\User; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 

Et quand je tente de charger mon page Je reçois cette erreur:

enter image description here

+0

Pouvez-vous montrer votre espace de noms et cours utilisant? –

+0

Salut @ImanaliMamadiev J'ai mis à jour le poste avec l'espace de noms et les classes –

Répondre

1

Vous avez oublié d'ajouter l'argument Request dans l'appel ResultsAction.

Déclaration contient 4 arguments:

resultsAction(Request $request, User $user, $type, $archive) 

Appel contient 3:

public function offerAction(User $user, $archive = false) 
{ 
    return $this->resultsAction($user, Operation::OFFER, $archive); 
} 
+0

Merci cela fonctionne! :) –

2

Vous devez passer la classe de demande lorsque vous appelez l'action:

public function offerAction(Request $request, User $user, $archive = false) 
{ 
    return $this->resultsAction($request, $user, Operation::OFFER, $archive); 
} 
+1

merci pour la réponse, mais j'ai accepté svgrafov un. mais merci pour votre aide –