Formattare i valori di un CDetailView o di un CGridView

Stavo creando la sezione eventi di un sito web. Ho inserito il mio editor visuale e poi sia nel datagrid che nella view, purtroppo, venivano mostrati anche i tag.

Così ho imparato una cosa nuova: i campi passati ai widget CDetailView e/o CGridView possono essere formattati. Per farlo non dobbiamo passare solamente il nome ma un array del tipo:




      array(

            'name' => 'corpo',

            'value' => $model->corpo,

            'type' => 'html'

      ),

Più nel dettaglio ecco il widget CDetailView …


<?php

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

    'data' => $model,

    'attributes' => array(

      'id',

      'titolo',

      'abstract',

      array('name' => 'corpo', 'value' => $model->corpo, 'type' => 'html'),

      'datainserimento',

      'attiva',

    ),

  ));

?>

… ed ecco il CGridView.


<?php

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

    'id' => 'eventi-grid',

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

    'filter' => $model,

    'columns' => array(

      'id',

      'titolo',

      'abstract',

      array('name' => 'corpo', 'value' => $model->corpo, 'type' => 'html'),

      'datainserimento',

      'attiva',

      array(

        'class' => 'CButtonColumn',

      ),

    ),

  ));

?>

il forum si sta trasformando rapidamente in una wiki (che non è una cosa necessariamente brutta) tuttavia secondo me o si convince qiang a rendere la wiki multilingua o segnalare i post con contenuto di tipo wiki con un tag nel titolo

del tipo: [WIKI]

Non c’e’ bisogno di convincere nessuno. La wiki e’ uno spazio gestito dagli utenti, per cui, se tu utente desideri una wiki multilingua, puoi armarti di buona volonta’ e tradurti qualche articolo.

Ci sono esempi di articoli tradotti, mi sembra che per ora lo facciano semplicemente scrivendo un’altro articolo…

il problema di aprire un nuovo articolo piuttosto che avere una wiki realmente multilingua è che ovviamente diventa più dispersivo, inoltre non è possibile effettuare ricerche per lingua all’interno della wiki in maniera più efficiente, oltre al fatto che è possibile vedere istantaneamente se un articolo esiste già nella tua lingua… certo si possono fare una serie di workaround per ottenere risultato simile, ma non è esattamente lo stesso <.<

Come zaccaria ha scritto sopra… la wiki e un posto dove i utenti possono condividere le loro idee…

Il wiki non deve essere in lingua inglese… in altre parole… non si tratta di tradure una wiki esistente… un utente puo scrivere / condividere una wiki completamente nuova, scritta nella sua lingua… gia esistono certe wiki scritte in non-inglese che non sono traduzzioni…

Per questo se pensi che hai del materiale per una wiki in italiano… scrivila pure… e poi per trovarle si puo usare il tag… basta che ci aggiungi IT nel tag ;)

oh, non sapevo fossi italiano mdomba :P

Dai un occhiata qui - http://www.yiiframework.com/forum/index.php?/topic/126-provenienza/page__view__findpost__p__68413

ah ecco! bhè lo scrivi decisamente bene, non avrei detto che eri croato ^^

comunque mi scuso per l’OT

Per riuscire a passare il valore prendendolo da un altro modello per la CDetailView e la CGridView ho dovuto usare due approcci differenti:

CDetailView




      array(

            'name' => 'IdStatoCliente',

            'value' => MyT2TipiStatiClientiTraduzioni::RitornaStato($data->IdStatoCliente),

      ),



CGridView




      array(

            'name' => 'IdStatoCliente',

            'value' => 'MyT2TipiStatiClientiTraduzioni::MostraStato($data->IdStatoCliente)',

      ),



MyT2TipiStatiClientiTraduzioni




class MyT2TipiStatiClientiTraduzioni extends T2TipiStatiClientiTraduzioni

{

	public function MostraStato($IdTipoStatoCliente=0)

	{

    $objModel = self::model()->find(

      'IdTipoStatoCliente=:idTipoStatoCliente AND IdLingua=:idLingua', array(

        ':idTipoStatoCliente'=>$IdTipoStatoCliente,

        ':idLingua'=>strtr(app()->GetLanguage(),array('%'=>'\%', '_'=>'\_', '\\'=>'\\\\'))

    ));

    echo $objModel->TipoStatoCliente;

	}


	public function RitornaStato($IdTipoStatoCliente=0)

	{

    $objModel = self::model()->find(

      'IdTipoStatoCliente=:idTipoStatoCliente AND IdLingua=:idLingua', array(

        ':idTipoStatoCliente'=>$IdTipoStatoCliente,

        ':idLingua'=>strtr(app()->GetLanguage(),array('%'=>'\%', '_'=>'\_', '\\'=>'\\\\'))

    ));

    return $objModel->TipoStatoCliente;

	}


}



RitornaStato non funziona nella CGridView e MostraStato non funziona nella CDetailView.

Ho sbagliato qualcosa o è giusto che sia cosi?