Logo du Blog de Kromack (Samuel Sanchez)

Ressources et tutoriaux : Web 2.0 – PHP – CodeIgniter – Webdesign

Tutoriel Acicrud : ajouter des custom methods à vos modèles

Tutoriel Acicrud : ajouter des custom methods à vos modèles

10 jan 2010

Tutoriel ACICRUD #5

Dans ce cinquième tutoriel d’utilisation de la librairie ACICURD pour CodeIgniter, nous allons voir comment définir de nouvelles méthodes dans les modèles utilisant ACICRUD et comment profiter de certaines méthodes de la librairie.

Création d’une méthode spécifique

Imaginons que vous désiriez sélectionner un champ username dans une table user à partir de l’identifiant de l’utilisateur id. Nous allons pour cela ajouter une nouvelle méthode dans notre modèle ayant exactement le fonctionnement que nous désirons et s’appuyant sur la méthode $this->row() qui exécute la requête Active Record et retourne un objet résultat.

Notez qu’il serait également possible d’utiliser la méthode getAll() d’ACICRUD pour arriver à ce résultat.

Voici le code du fichier user.php à placer dans le répertoire models :

<?php
 
class User extends Acicrud {
 
	//CONSTRUCTOR
	public function __construct()
	{
		parent::__construct('user');
	}
 
	//CUSTOM METHODS
 
	/**
	 * Return the username of an user identified by his id
	 *
	 * @param int $id
	 * @return Object
	 */
	public function get_username($id = null) {
 
		try {
 
			// Checking if $id is a valid primary key value
			$this->checkId($id);
 
			// Building the query
			$this->db->select('username')->from($this->table)->where($this->key, $id);
 
			// Returning the result
			return $this->row();		
 
		} catch(Exception $e) {
 
			throw($e); // Throws the ACICRUD's exception
 
		}
	}
 
}
 
?>

Il vous est donc tout à fait possible d’ajouter vos propres comportements au sein d’un modèle héritant de la librairie ACICRUD. Notez que dans cet exemple, la méthode s’appuie également sur le système d’exceptions géré par ACICRUD. Je vous conseille donc d’inclure l’appel de la méthode get_username dans votre contrôleur au sein d’un bloc try/catch.

Tutoriel suivant

» Utiliser plusieurs bases de données

Leave a Reply

Optimized by SEO Ultimate