CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 03-09-2014 08:28:13

roland
Crêpe Suzette
Date d'inscription: 27-08-2014
Messages: 8

Problème affichage menu.ctp

hello un problème d'affichage avec mon menu deux erreur que je n'arrive pas à définir

voici les messages d'erreurs

Code: php

  1. Strict (2048): Declaration of Post::afterFind() should be compatible with Model::afterFind($results, $primary = false) [APP/Model/Post.php, line 3]

Code: php

  1. Warning (2): Invalid argument supplied for foreach() [APP/View/Elements/menu.ctp, line 3]

et voici mes fichiers menu.ctp Post.php et le fichier Controller

Post.php

Code: php

  1. <?php
  2.  
  3. class Post extends AppModel{
  4.  
  5.     public function afterFind($data){
  6.     foreach($data as $k=>$d){
  7.     if (isset($d['Post']['slug']) && isset($d['Post']['id'])){
  8.  
  9.       $d['Post']['link'] = array(
  10.  
  11.       'controller'  => 'pages',
  12.       'action'      => 'show' ,
  13.       'id'          => $d['Post']['id'],
  14.       'slug'        => $d['Post']['slug']
  15.         );
  16.      }
  17.    
  18.      $data[$k] = $d;
  19. }
  20.     debug($data);
  21.     }
  22.  
  23. }

PageController.php

Code: php

  1. <?php
  2. class PagesController extends AppController {
  3.  
  4.       public $uses = array('Post');
  5.       function menu(){
  6.          $pages = $this-> Post->find('all',array(
  7.  
  8.         'conditions' => array('type'=>'page','online'=>1)
  9.          ));
  10.  
  11.          return $pages;
  12.     }
  13.       function show($id = null,$slug = null){
  14.    }
  15.  
  16.  
  17. }

menu.ctp

Code: php

  1. <?php $pages =  $this->requestAction(array('controller'=>'pages','action'=>'menu'));?>
  2. <ul class="nav navbar-nav">
  3.     <?php foreach($pages as $k=>$v): $v = current($v);?>
  4.     <li> <?php echo $this->Html->link($v['name'],$v['link']);?></li>        
  5.      <?php endforeach; ?>
  6.   </ul>

Si vous avez une idée ou le problème c'est produit pour vous merci de votre retour

neutral

Hors ligne

 

#2 03-09-2014 09:15:19

s13
Fraisier
Date d'inscription: 28-01-2011
Messages: 64

Re: Problème affichage menu.ctp

la premiere erreur est clairement expliquée : ta methode beforeFilter doit avoir les parametres : $results et $primary = false soit :

Code: php

  1. class Post extends AppModel{
  2.  
  3.     public function afterFind($results, $primary = false){}
  4. }

pour la deuxième il semblerait qu'il n'y ait pas de résultat pour ta requête donc la valeur de $pages doit être false


-
Join us: irc.freenode.net #cakephp-fr

Hors ligne

 

#3 03-09-2014 09:16:05

spout
Cooker
Date d'inscription: 18-12-2010
Messages: 1899

Re: Problème affichage menu.ctp

Pour ta première erreur, c'est assez explicite, il te donne même la soluce dans l'erreur.
http://book.cakephp.org/2.0/en/models/c … #afterfind

Pour la 2° erreur, tu dois mettre le 2° paramètre array('return') pour requestAction()
http://book.cakephp.org/2.0/en/controll … uestAction

Hors ligne

 

#4 03-09-2014 12:19:05

roland
Crêpe Suzette
Date d'inscription: 27-08-2014
Messages: 8

Re: Problème affichage menu.ctp

j'ai fais la modification mais je me retrouve avec le debug de mon modele sous ma barre et c'est comme si j'avais une seconde barre sur la première.


Code: php

  1. <?php $pages =  $this->requestAction(array('controller'=>'pages','action'=>'menu' array('return')));?>

Screenshoot error

Mon modele modifié

Code: php

  1. <?php
  2.  
  3. class Post extends AppModel{
  4.  
  5.     public function afterFind($data, $results, $primary = false){
  6.     foreach($data as $k=>$d){
  7.     if (isset($d['Post']['slug']) && isset($d['Post']['id'])){
  8.  
  9.       $d['Post']['link'] = array(
  10.  
  11.       'controller'  => 'pages',
  12.       'action'      => 'show' ,
  13.       'id'          => $d['Post']['id'],
  14.       'slug'        => $d['Post']['slug']
  15.         );
  16.      }
  17.    
  18.      $data[$k] = $d;
  19. }
  20.     debug($data);
  21.     }
  22.  
  23. }

Mais je ne suis pas certain que cela est résolu mon problème je n'ai plus les erreurs juste le menu affiché avec l'erreur en background

Hors ligne

 

#5 03-09-2014 12:37:18

spout
Cooker
Date d'inscription: 18-12-2010
Messages: 1899

Re: Problème affichage menu.ctp

Non c'est tjs pas ça le afterFind, try again.

Hors ligne

 

#6 04-09-2014 11:24:40

roland
Crêpe Suzette
Date d'inscription: 27-08-2014
Messages: 8

Re: Problème affichage menu.ctp

c'est bon j'ai fait les modifications necessaire mais je n'ai pas mon affichages dans le menu
Tout m'a l'air ok pas de retour d'erreur ni dans menu.ctp ni Post.php  en fait tout fonctionnait bien jusqu'a l'apparition de ma première page sous la bar de menu.
ma barre s'affiche sans erreur et je ne récupère plus le champ menu
j'ai l'impression que je n'ai pas le retour de ma requête db

menu.ctp

Code: php

  1. <?php $pages =  $this->requestAction(array('controller'=>'pages','action'=>'menu')); ?>
  2. <ul class="nav navbar-nav">
  3.   <?php foreach($pages as $k=>$v): $v =  current($v); ?>
  4.   <li><?php echo $this->Html->link($v['name'],$v['link']); ?></li>
  5.   <?php endforeach ;?>
  6.   </ul>

default.ctp

Code: php

  1. <div class="collapse navbar-collapse">
  2.             <?php $this->element('menu'); ?>
  3.           <ul class="nav navbar-nav navbar-right">

PagesController.php

Code: php

  1. <?php
  2.  
  3. class PagesController extends AppController {
  4.  
  5.    public $uses= array('Post');
  6.  
  7.           function menu(){
  8.            $pages = $this->Post->find('all',array(
  9.                 'conditions' => array('type'=>'page','online'=>1)
  10.             ));
  11.            
  12.            return $pages;
  13.            
  14.  
  15.    
  16.  
  17.   }
  18.  
  19. }

Je ne retrouve aucune erreur dans ces fichiers

sad

Hors ligne

 

#7 04-09-2014 12:10:12

spout
Cooker
Date d'inscription: 18-12-2010
Messages: 1899

Re: Problème affichage menu.ctp

Bon moi je passe mon tour parce qu'on est 2 à te donner la soluce ici et puis on constate que tu suis pas nos indications.
++

Hors ligne

 

#8 04-09-2014 12:20:44

roland
Crêpe Suzette
Date d'inscription: 27-08-2014
Messages: 8

Re: Problème affichage menu.ctp

En mettez ces paramètres ca ne change pas mon problème puisque je n'ai toujours pas mon champs qui s'affiche dans la barre  de navigation  et puisque mon modele à été modifié je n'ai plus l'erreur mais le problème reste le même si aucune données ne s'affiche

Hors ligne

 

#9 05-09-2014 08:13:33

s13
Fraisier
Date d'inscription: 28-01-2011
Messages: 64

Re: Problème affichage menu.ctp

Ca donne quoi si tu fais un debug($pages) après la requête ?
$pages = $this->Post->find('all',array('conditions' => array('type'=>'page','online'=>1)));


-
Join us: irc.freenode.net #cakephp-fr

Hors ligne

 

#10 05-09-2014 11:36:17

shingo
Fraisier
Date d'inscription: 04-03-2014
Messages: 54

Re: Problème affichage menu.ctp

C'est normal que tu n'a pas de requête qui sort, si tu ne retourne rien à la fin... De plus, on t'as déjà dit que ta fonction doit être compatible avec celle de CakePHP en gros voilà comment t'y prendre :

Code: php

  1. public function afterFind($results, $primary = false) {
  2.  
  3. if(!empty($results)) {
  4.   foreach($results as $key => $result) {
  5.        /* ta logique */
  6.   }
  7. }
  8.  
  9. return $results
  10.  
  11. }

Il sort d'où ton $data ?!

Dernière modification par shingo (05-09-2014 11:36:53)

Hors ligne

 

#11 09-09-2014 18:57:24

roland
Crêpe Suzette
Date d'inscription: 27-08-2014
Messages: 8

Re: Problème affichage menu.ctp

Merci beaucoup ca fonctionne ,
Je viens de commencer mon backoffice j'affiche mon tableau mais il semblerait que ma variable soit mal défini cela vous parle ?

Code: php

  1. Notice (8): Undefined variable: pages [APP/View/Pages/admin_index.ctp, line 14]
  2. Warning (2): Invalid argument supplied for foreach() [APP/View/Pages/admin_index.ctp, line 14]

[img align=https://www.dropbox.com/s/srshrcrqz318dk5/Capture%20d%E2%80%99%C3%A9cran%202014-09-09%20%C3%A0%2018.55.27.png?dl=0]https://www.dropbox.com/s/srshrcrqz318dk5/Capture%20d%E2%80%99%C3%A9cran%202014-09-09%20%C3%A0%2018.55.27.png?dl=0[/img]

cela peut il venir de mon controller ??

Hors ligne

 

Pied de page des forums

Propuls� par FluxBB
Traduction par FluxBB.fr