2016-01-02 5 views
0

Je viens de créer un comportement de tag pour gérer les tags dans un champ de saisie (tous les mots-clés sont séparés par une virgule). Pour ce faire, je nomme mon entrée "tag_string". J'ai donc besoin d'un getter pour gérer la chaîne. Je n'ai pas compris comment implémenter une méthode _getTagString() directement dans le comportement.Getter dans un comportement cakephp 3

Si j'utilise getter (getTagString) dans chaque fichier d'entités qui utilise mon comportement, tout mon code fonctionne correctement. Donc pour éviter d'écrire le même getter dans chaque fichier je veux le mettre dans mon fichier de comportement. Mais ça ne marche pas.

Voici ma méthode:

public function _getTagString() { 
    if (isset($this->_properties['tag_string'])) { 
     return $this->_properties['tag_string']; 
    } 
    if (empty($entity->tags)) { 
     return ''; 
    } 
    $tags = new Collection($entity->tags); 
    $str = $tags->reduce(function ($string, $tag) { 
     return $string . $tag->name . ', '; 
    }, ''); 
    return trim($str, ', '); 
} 

Merci pour votre aide

+0

Vous pourriez vouloir élaborer sur ce que '_getTagString()' fait exactement, et comment vous prévoyez d'utiliser sa valeur de retour. Sans le savoir, les gens auront du mal à vous dire autre chose que le fait que les accesseurs ne sont que pour les entités. – ndm

+0

Merci pour votre réponse. Je viens d'éditer mon post. – user3540430

Répondre

0

Après plusieurs recherches, je ne trouve rien à mettre en œuvre accesseurs directement dans le comportement.

J'utilise trait, et ça marche bien.