Bonsoir, après avoir installer cake, j'ai essayer la création d'un blog:
j'ai commencé a faire la pagination:
1- on crée une pagination des différents article proposé, elle son numéroté de
1 à N
2- on crée a droite une autre pagination mais cette fois par des liens(on utlise $html->link , on affiche les différents catégories , et si on clique dessus on tombe sur le groupe d'article qui correspond a un thème.
j'ai réussi a faire la pagination de numérotation ( on clique sur 1|2|3 etc..)
pour essayer d'expliquer la chose, car c'est pas évident je montre ma table qui s'appelle posts
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 -- -- TABLE posts ________________ -- CREATE TABLE IF NOT EXISTS `posts` ( `id` int(3) unsigned NOT NULL AUTO_INCREMENT, `titre` varchar(60) NOT NULL, `contenu` longtext NOT NULL, `date` datetime NOT NULL, `category_id` int(2) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
ici on a une clef étrangère category_id qui est lié a une table catégories,la voici
ici c'est le script (la vu) aquel j'ai un lien qui contient la page des différent a un autre groupe d'article (si j'efface ce bout de scipt je n'ai pas d'erreur)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TABLE categories ______________ id titre 1 entreprise 2 article
voici ce que le controleur va recupère
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $menu = $this->requestAction (array ("controller"=>"Categories","action"=>"clist") ); foreach ($menu as $m) { $m=$m['Category']; echo "<li>" .$html->link($m['titre'], array("controller"=>"Posts","action"=>"category",$m['id'])).'</li>'; }
lorsque que je clique sur le lien ($html->link...) j'ai une erreur
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
24 Array ( [0] => Array ( [Category] => Array ( [id] => 1 [titre] => entreprise ) ) [1] => Array ( [Category] => Array ( [id] => 2 [titre] => article ) ) )
lorsque je survole le lien j'ai bien afficher:
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 Missing Method in PostsController Error: The action category is not defined in controller PostsController Error: Create PostsController::category() in file: app\controllers\posts_controller.php. <?php class PostsController extends AppController { var $name = 'Posts'; function category() { } } ?> Notice: If you want to customize this error message, create app\views\errors\missing_action.ctp.
a la fin du tuto il est indiquée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3http://localhost/cakephp/Posts/category/1 (ou bien 2 pour l'autre lien) donc je suppose que la vu envoie bien les informations necessaires
d'après ce que j'ai compris il faut mettre ce bout de scipt avant de faire un $paginator, je l'ai donc ajouté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 * Edit : Lorsque vous changez de page dans une catégorie le système "bug". En effet, j'ai oublié de préciser à paginator qu'il devait faire passer l'id de la catégorie en paramètre. Pour régler le souci il faut ajouter dans la vue avant la première utilisation de paginator : $paginator->options(array('url' => $this->passedArgs));
ici c'est le bout de scipt(en amont) de la même vu (le bout de script ou on clique sur le lien)
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 <div id="map"> <?php $paginator->options(array('url' => $this->passedArgs)); echo $paginator->numbers(); foreach($resultat as $a): echo '<div>'.$html->image('/structure/image/logo.png').'<p><span>'.$a["Post"] ["titre"].'</span></p></div>'; echo '<br/><span>'. date("d/m/y",strtotime($a['Post']['date'])).'::'.$a['Category']['titre'] .'</span>'; echo '<p>'.$a["Post"]["contenu"].'</p>'; endforeach ?> </div>
je donne les 2 modèles je suis sous ph5
avec le MCV c'est 3 fois plus difficiles a expliquer le problème on ne peut dissocier les bouts de script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php class Category extends AppModel { } ?> _____________________________ <?php class Post extends AppModel { public $belongsTo='Category'; } ?>
cela n'a rien changé au problème
si quelqu'un a le courage de m'aider(faut avoué que c'est super long...)
merci d'avance
Partager