Bonjour.
J'aimerais pouvoir tronquer un texte avant son affichage finale dans la vue, donc le traiter directement dans le modele.
J'ai pour ce faire crée ma fonction dans lib/Blog.class.php :
Maintenant voici le code d'affichage executeIndex de post/actions/action.class.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 class Blog { protected static $MaxCaracteres = 500; static public function tronque($text) { // Test si la longueur du texte dépasse la limite if (strlen($text)>self::$MaxCaracteres) { // Séléction du maximum de caractères $text = substr($text, 0, self::$MaxCaracteres); // Récupération de la position du dernier espace (afin déviter de tronquer un mot) $position_espace = strrpos($text, " "); $text = substr($text, 0, $position_espace); // Ajout des "..." $text = $text."..."; return $text; } } }
Et voici comment je recupere le tout dans BlogPostTable.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $this->posts = Doctrine::getTable('BlogPost')->getAll();
Si vous avez la solution je suis prenneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function getAll() { return Doctrine_Query::create()-> select('p.title, p.category_id, p.slug, p.body, p.author, p.created_at, count(c.id) numcomments')-> from('BlogPost p, p.BlogComment c')-> orderBy('p.created_at DESC')-> groupBy('p.id')-> execute(); }
Merci
Partager