Alias et VirtualFields dans CakePHP
Par Fred le jeudi, août 18 2011, 16:11 - Envie - Lien permanent
Dans CakePHP 2.0 (beta à la date d'aujourd'hui), avoir des VirtualFields peut générer des erreurs lorsqu'un modèle change d'alias.
Pour remédier à ce problème, voici un petit bout de code à placer dans AppModel.
public function getVirtualField($field = null) {
if (!empty($field) && $this->isVirtualField($field)) {
if (strpos($field, '.') !== false) {
list($model, $field) = explode('.', $field);
}
return str_replace('{alias}', $this->alias, $this->virtualFields[$field]);
} else {
return parent::getVirtualField($field);
}
}
Ensuite, spécifiez vos virtualFields de la manière suivante :
var $virtualFields = array(
'name' => "CONCAT({alias}.first_name, ' ', {alias}.last_name)"
);
Ce qui dynamiquement donnera ceci :
var $virtualFields = array( 'name' => "CONCAT(User.first_name, ' ', User.last_name)" );
Edit #1 : Gestion du . dans le nom du champ passé à la fonction.
