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 :

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;
		}
 
	}
}
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
 
		$this->posts = Doctrine::getTable('BlogPost')->getAll();
Et voici comment je recupere le tout dans BlogPostTable.php
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();
	}
Si vous avez la solution je suis prenneur.

Merci