Anfängerfrage: Wie ausgaben in CDetailView richtig anzeigen

Hallo allerseits, da ich beschlossen habe Yii zu erlernen habe ich beschlossen eine kleine Comic-Datenbank für meine Freundin zu schreiben (der nutzten sei mal dahingestellt ich fands halt passend zum üben)

Leider bekomme ich die Ausgaben nicht so wie ich sie gerne hätte:

Laut dem ersten Yii Buch von Jeffrey Winesett müsste es ja so wie weiter unten beschrieben gehen:

Leider erhalte ich dann die Fehlermeldung:


htmlspecialchars() expects parameter 1 to be string, array given 

So im View steht bei mir:


$this->widget('zii.widgets.grid.CGridView', array(

            'id'=>'comics-grid',

            'dataProvider'=>$model->search(),

            'filter'=>$model,

            'columns'=>array(

                    //'id',

                    'name',

                    'gernumber',

                    'usnumber',

                    'owned',

                    'wanted',

                    'artist',

                    'writer',

                    'publisher',

                    'genre',

                    'launch',

                    'character',

                    'rating',

                    array(

                        'name' => 'lang',

                        'value' => CHtml::encode($model->getLangText()),

                    ),

                    array(

                            'class'=>'CButtonColumn',

                    ),

            ),

    ));



und im Model steht bei mir:




const LANG_DE='de';

const LANG_EN='en';


public function getLangText(){

            

            return array(

                self::LANG_DE=>'Deutsch',

                self::LANG_EN=>'Englisch',

            );

}






Daher bitte ich hier um Hilfe hab mich bereits verrrückt gegoogelt und im forum geschaut aba alles hat mir nciht so recht geholfen auch fällt es mir schwer richtig dannach zu suchen.

Viele Grüße aus Neuss, Ralf

das sagt doch die fehlermeldung: es will einen string, bekommt aber ein array aus getLangText

Ja das hab ich verstanden mir war nur nicht ganz klar wie ich yii erreiche das die funktion die korrekte Ausgabe ausgibt. hab mich da wohl etwas unklar ausgedrückt wie dem auch sei habs nu hinbekommen statt das in der Tabelle "de" steht wie es in der Datenbank steht, nun dort "Deutsch" so wie es auch sein soll:

mein CGridView:




$this->widget('zii.widgets.grid.CGridView', array(

            'id'=>'comics-grid',

            'dataProvider'=>$model->search(),

            'filter'=>$model,

            'columns'=>array(

                    //'id',

                    'name',

                    'gernumber',

                    'usnumber',

                    'owned',

                    'wanted',

                    'artist',

                    'writer',

                    'publisher',

                    'genre',

                    'launch',

                    'character',

                    'rating',

                    //'lang',

                    array(

                        'name' => 'lang',

                        'value' => 'CHtml::encode($data->getLangText($data->lang))',

                    ),

                    array(

                            'class'=>'CButtonColumn',

                    ),

            ),

    ));



mein getLangText():




public function getLangText($lang){

            switch ($lang) {

                case "de":

                    return "Deutsch";

                    break;

                case "en":

                    echo "Englisch";

                    break;

            }



Was denkt ihr das geht doch sicher noch irgendwie eleganter oder?

Da dein model ja das Attribut ‘lang’ schon besitzt und dieses auch immer gesetzt ist wenn es aus der Datenbank geladen wir würd ich der Funktion keine Variable übergeben, sondern eher so an die Sache rangehen:




public static $languages=array(

    'de'=>'Deutsch',

    'en'=>'Englisch',

);


public function getLangText()

{

    if(isset(self::$languages[$this->lang]))

        return self::$languages[$this->lang];

}