Yii Framework Forum: [Risolto] Cgridview: Aggiungere La Ricerca Su Un Campo Collegato - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Risolto] Cgridview: Aggiungere La Ricerca Su Un Campo Collegato Rate Topic: -----

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 06 October 2012 - 06:27 AM

Tabella 1: Users (si, sempre quella... )
Tabella 2: Groups

Uno User appartiene ad un unico Group

da qui ho impostato la relation

'gruppo' => array(self::BELONGS_TO, 'GruppiDiServizio', 'gruppoId'),


Ho impostato la label

'gruppo.denominazione' => 'Gruppo Di Servizio',


Nella view admin ho impostato la colonna
'columns'=>array(
   ....
   'gruppo.denominazione',
   ....


E fino qui ho che la lista funziona... la label è corretta, e il campo mostra il nome del gruppo. Ok

Solo che la CGridView NON ha il box di ricerca come per gli altri campi ... come si aggiunge !?

Dovrei imparare per la precisione 2 cose:
- 1: come aggiungere una semplice ricerca 'a mano', visto che il model è stato esteso dopo la creazione del crud
- 2: come effettuare tramite il nuovo textbox la ricerca sul campo collegato, quindi non per id, ma per denominazione gruppo.

Posted Image

Insomma, devo aggiungere il box che manca dove c'è il cerchio rosso... spero di essermi spiegato

Sto provando a seguire questo tutorial [English], e magari è utile anche a qualcun'altro:
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#2 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 06 October 2012 - 09:13 AM

AGGIORNAMENTO: dato che questa guida prevede una nomenclatura particolare delle colonne, mentre io uso lo standard oggetto.campo, sto ancora impazzendo a capire come diavolo farla funzionare ..... se modifico la nomenclatura dei campi, poi non mi funziona più l'ordinamento !

Devo solo poter fare una ricerca su un campo collegato, sia nella advanced view, sia nella ricerca 'per colonna' dell CGridView !

Ci sarà un sistema standard, no ?
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#3 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 325
  • Joined: 10-April 12

Posted 06 October 2012 - 10:45 AM

per cambiare nome alla colonna o cmq personalizzarla devi scriverla come:

array('header'=>'Nome colonna','name'=>'nomecampo'..); e così via


per il search prova a modificare nel model la funzione search()
e i relativi criteria.
0

#4 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 07 October 2012 - 06:44 AM

grazie st4nny per la risposta...

mi chiedevo se nessuno di voi ha mai avuto la necessità di fare la ricerca da una gridView in un campo collegato.... se si, come avete fatto ? Sono due giorni che provo ad aggiungere dei compare, ad usare addSearchCriteria, etc... senza alcun risultato se non delle CDbException e degli errori SQL ...
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#5 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 08 October 2012 - 01:58 AM

Per fare la ricerca devi eseguire le seguenti operazioni:

1) Aggiungere la proprieta' filter alla colonna, questa cosa non la puoi fare con la nomenclatura breve, devi per forza fare un array:

array(
    'header'=>'Nome colonna',
    'name'=>'gruppo.descrizione',
    'filter'=>CHtml::activeTextField($model, 'gruppo_descr'),
);


Questa cosa ti crea un textbox collegata alla proprita' gruppo del model.

Se non hai la proprieta', avrai un errore, devi andare nel model e creare la proprieta':


public $gruppo_descr;

Aggiungerla ai safe attrubute per la search

public function rules()
{
  return array(
      ...
      array('.., gruppo_descr', 'safe', 'on'=>'search')
  );


E aggiungere la condizione nella funzione search:

public function search()
{

  $criteria->with=array('gruppo');
  $criteria->compare('gruppo.descrizione', $this->gruppo_descr);

1

#6 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 09 October 2012 - 12:37 AM

Hai risolto?
0

#7 User is offline   roccodelux 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 08-September 12

Posted 12 October 2012 - 06:18 AM

Grazie Zaccaria il tuo post mi è stato utile.
Per aggiungere il campo nel componente zii.widgets.grid.CGridView ho messo semplicemente


array( 'header'=>'Citta','name'=>'cittas_search', 'value'=>'$data->cittas->nome' ),
		array(
			'class'=>'CButtonColumn',
		),

1

#8 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 620
  • Joined: 03-October 12
  • Location:Ferrara

Posted 12 October 2012 - 04:00 PM

View Postroccodelux, on 12 October 2012 - 06:18 AM, said:

Grazie Zaccaria il tuo post mi è stato utile.
Per aggiungere il campo nel componente zii.widgets.grid.CGridView ho messo semplicemente


array( 'header'=>'Citta','name'=>'cittas_search', 'value'=>'$data->cittas->nome' ),
		array(
			'class'=>'CButtonColumn',
		),



vuoi dire che così ti funziona la ricerca sul campo collegato ? anche il filtro 'in colonna' della CGridView ?
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#9 User is offline   roccodelux 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 08-September 12

Posted 13 October 2012 - 12:06 PM

View Postrealtebo, on 12 October 2012 - 04:00 PM, said:

vuoi dire che così ti funziona la ricerca sul campo collegato ? anche il filtro 'in colonna' della CGridView ?

Certo che funziona.
Ricordati di apportare le modifiche al model come indicato da Zaccaria oppure nel wiki.
Potresti mettere Risolto
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users