IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

probleme simple : route cake php


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 28
    Points
    28
    Par défaut probleme simple : route cake php
    Bonjour,

    je planche sur un gros probleme de routing depuis 12h,

    malgrès des codes identiques pour mes routes, controller, vues et modeles, cake me génère deux liens différents :

    http://localhost/cakebase/page/article-2-31
    http://localhost/cakebase/truc/show/id:30/slug:page-1

    Pourquoi?

    Merci!


    j'ai deux routes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Router::connect('/truc/:slug-:id',
    					array('controller'=>'trucs','action'=>'show'),
    					array('pass'=> array('id','slug'))
    				);	
    	Router::connect('/page/:slug-:id',
    					array('controller'=>'page','action'=>'show'),
    					array('pass'=> array('id','slug'))
    				);

    TrucsController.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    class TrucsController extends AppController{
     
     
    function index () {
    				$d['truc']= $this->Truc->find('all') ; 
     
    		$this->set($d);
    	}
     
     
    	}

    PagesController.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    class PagesController extends AppController{
     
     
    function index () {
    				$d['page']= $this->Page->find('all') ; 
     
    		$this->set($d);
    	}
     
     
     
    }

    model page.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php 
    class Page extends AppModel{
     
    		public function afterFind($data,$primary = false){
    		foreach($data as $k=>$d){
    			if(isset($d['Page']['slug']) && isset($d['Page']['id']) ){
    				$d['Page']['link'] = array(
    					'controller'	=> 'page', //met au pluriel post ou page
    					'action'		=> 'show',
    					'id'			=> $d['Page']['id'],
    					'slug'			=> $d['Page']['slug']
    				);
    			}
    			$data[$k] = $d; 
    			debug($d);
    		}
    		return $data;
    	}
     
     
     
    	}
    }
    Truc.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php 
    class Truc extends AppModel{
     
    		public function afterFind($data,$primary = false){
    		foreach($data as $k=>$d){
    			if(isset($d['Truc']['slug']) && isset($d['Truc']['id']) ){
    				$d['Truc']['link'] = array(
    					'controller'	=> 'truc', //met au pluriel post ou page
    					'action'		=> 'show',
    					'id'			=> $d['Truc']['id'],
    					'slug'			=> $d['Truc']['slug']
    				);
    			}
    			$data[$k] = $d; 
    			debug($d);
    		}
    		return $data;
    	}
     
     
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    view/Pages/index.php
     
    <?php 
    echo "</BR>debut index.ctp";
    foreach($page as $k=>$v) : 
    $v =  current($v);
    debug($v['link']);
    echo $this->Html->link($v['name'],$v['link']);?> 
    <?php endforeach; 
    echo "fin index.ctp.</BR>";?> 
     
     et /Trucs/index.php qui sont identiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php 
    echo "</BR>debut index.ctp";
    foreach($truc as $k=>$v) : 
    $v =  current($v);
    debug($v['link']);
    echo $this->Html->link($v['name'],$v['link']);?> 
    <?php endforeach; 
    echo "fin index.ctp.</BR>";?>

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    "PagesController" par défaut dans cake est un controller particulier dans cake (le seul), donc il se pourrait que des broutilles apparaissent.

    Tu l'as aussi indiqué au singulier dans ta route, alors que le pluriel est fortement recommandé pour éviter toute ambiguité.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

Discussions similaires

  1. Réponses: 14
    Dernier message: 24/08/2006, 18h12
  2. [MySQL] probleme requete sql et php
    Par digger dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/10/2005, 14h15
  3. Probleme simple : Update du champ le + petit
    Par barok dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/09/2005, 13h33
  4. Probleme simple de debutant avec INSERT TO et UPDATE
    Par Tom_Cruise dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 08h15
  5. probleme simple de tab[][]
    Par vince3320 dans le forum C
    Réponses: 8
    Dernier message: 17/05/2004, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo