Yii : Les attributs d’un modèle en paramètres de l’application

Utiliser une table de la base de données pour stocker les informations du site (titre, description, logo…) c’est bien, mais bon, faire des requêtes à chaque chargement de page juste pour ça, c’est un peu dommage. Il y a pourtant une solution.

J’avais bien trouvé l’extension dbparam mais elle implique d’avoir une table « param » qui possède deux colonnes « clef » et « valeur ».

Ce n’est pas ce que je veux, car je rompt les règles de formes normales des BDD.

Du coup, problème? Que nenni, solution! Voici ce que je propose… Ca m’a été inspiré par le très bon wiki yii de Pablovp, qui s’intitule « Setting application parameters dynamically in the back-end« .

C’est en fait très simple puisqu’il suffit de rajouter ceci dans l’index.php de l’application :

$app = Yii::createWebApplication($config);
$myparamtable = Myparammodel::model()->find();
foreach( $myparamtable->attributes as $key => $value )
{
    $app->params->add($key, $value);
}
$app->run();

On parcours là tous les attributs de l’enregistrement unique dans la base, puis on les ajoutes un à un dans les paramètres de l’application, avant de la lancer. Il suffit ensuite pour appeler le paramètre de faire ceci par exemple pour le titre :

CHtml::encode(Yii::app()->params->titre)

Et voilà!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *