CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 23-06-2015 11:27:44

passealasuite
Chouquette
Date d'inscription: 23-06-2015
Messages: 3

Routing pour pagination et formulaire

Bonjour à tous,

Travaillant actuellement sur un projet cakephp 2.5, je rencontre deux problèmes sur le routing :

Le premier concerne la pagination, en effet lorsque je change de page, mon url reprend l'affichage "classique", avec "/controller/action/page:2/, or je souhaite conserver l'url suivante "/category/page:2. Je ne sais donc pas comment integrer à ma route la pagination. Voici le code en question :

Route :

Code: php

  1. Router::connect('/:category',
  2.         array('controller' => 'posts', 'action' => 'index'),
  3.         array('pass' => array('category'), 'category' => '[a-z]+')
  4.     );

Enfin, le second problème concerne le routing sur un formulaire de recherche, ou là une erreur 404 m'est renvoyée, voici le code :

Route :

Code: php

  1. Router::connect('/recherche/*',
  2.         array('controller' => 'posts', 'action' => 'search')
  3.     );

Formulaire :

Code: php

  1. <?= $this->Form->create('Post', array('controller' => 'post', 'action' => 'search'));?>
  2.                 <?= $this->Form->input(false , array('type' => 'text', 'class' => 'text', 'label'=> false, 'value' => false));?>
  3.                 <?= $this->Form->button(false, array('class' => 'go', 'label'=> false)); ?>
  4. <?= $this->Form->end(); ?>

Malgré mes recherches je n'est pas encore trouvé de solution.
Merci pour votre aide.

Hors ligne

 

#2 01-07-2015 08:24:31

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: Routing pour pagination et formulaire

Salut,
dans le 1er cas, je ne vois pas trop.
Par contre, dans le second cas, il me semble que ta route n'est pas bonne. Je verrais plutôt un truc comme :

Code: php

  1. <?= $this->Form->create('Post', array('controller' => 'recherche'));?>
  2.                 <?= $this->Form->input(false , array('type' => 'text', 'class' => 'text', 'label'=> false, 'value' => false));?>
  3.                 <?= $this->Form->button(false, array('class' => 'go', 'label'=> false)); ?>
  4. <?= $this->Form->end(); ?>

Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#3 01-07-2015 09:27:09

passealasuite
Chouquette
Date d'inscription: 23-06-2015
Messages: 3

Re: Routing pour pagination et formulaire

Salut,

En utilisant ta méthode le formulaire ne peux pas trouver le controller ainsi que l'action appelés. J'ai donc toujours une erreur.

Hors ligne

 

#4 23-07-2015 10:30:22

passealasuite
Chouquette
Date d'inscription: 23-06-2015
Messages: 3

Re: Routing pour pagination et formulaire

Pour info :

Code: php

  1. Router::connect('/:category/:page',
  2.         array('controller' => 'posts', 'action' => 'index'),
  3.         array('pass' => array('category', 'page'), 'category' => '[A-z]+', 'page' => '[0-9]+')
  4.     );

Pour la pagination, j'ai créer moi même les liens sans utiliser le helper.

Hors ligne

 

#5 27-07-2015 09:43:06

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: Routing pour pagination et formulaire

Désolé je vois pas trop, les routes c'est pas mon fort sad


Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#6 04-08-2015 05:34:09

frmsoc
Brownie
Date d'inscription: 04-08-2015
Messages: 21

Re: Routing pour pagination et formulaire

salut,

rien à voir avec le routing.

dans ton create du Form, la clé controller n'existe pas (uniquement la clé action si elle est différente de celle de l'url courante, mais dans ce cas le controller est toujours celui du Model défini ou de l'url courante). si tu veux préciser une url complète avec controller et action différents tu dois utiliser la clé 'url' :

Code: php

  1. echo $this->Form->create('Post', array(
  2.     'url' => array('controller' => 'controllers', 'action' => 'action')
  3. ));

mais dans ton cas tu peux aussi tout simplement profiter du routing inversé avec ta route '/recherche' définie, sans passer par un tableau :

Code: php

  1. echo $this->Form->create('Post', array(
  2.     'url' => '/recherche'
  3. ));

ton * à la fin de la route peut être supprimée si tu passes tout en post.

Code: php

  1. Router::connect('/recherche',
  2.         array('controller' => 'posts', 'action' => 'search')
  3.     );

Dernière modification par frmsoc (04-08-2015 05:41:58)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr