Ho una lista con CGridView e due tipologie di utenti che possono visualizzarla.
Una tipologia di utenza può modificare ed eliminare qualsiasi record, l’altra tipologia invece può solo modificare e non eliminare solo quelli che hanno un campo della stessa query con “personaggio=‘vip’”
Domanda posso sfruttare CGridView o devo rifarmi la lista io?
grazie mille manuel, questa proprietà template me la studio subito…
e mi risolverebbe il differenziare le azioni delle due tipologie di utenti,
ma è possibile personalizzare anche in base ad un campo… come chiedevo?
In particolari ho due tipologie di utente A e B
L’utente A modifica e cancella tutti i record (quindi non c’è nessun problema), l’utente B però può solo modificare alcuni record quelli che hanno citta=roma per esempio…
be , mi sembra ovvio che nei 2 casi andrai a renderizzare due gridview diverse o inizializzate con parametri diversi
nel caso dell’utente B, se intendi far comparire il pulsante di modifica solo su alcuni record, il tutto si complica e così su 2 piedi non saprei dare una soluzione
Pensavo fosse possibile perchè ho letto più volte che il widget gridview é uno dei più malleabili… Ma se non è possibile mettere il pulsante di modifica solo su alcuni record, toccherà farmi a manina la tabella di backend
Puoi provare ad estendere la classe CButtonColumn. In particolare puoi sovrascrivere il metodo CButtonColumn::renderDataCellContent() per alterarne il comportamento. Il metodo renderDataCellContent è quel metodo che tramuta il template in bottoni veri e propri. In questo esempio, altero renderDataCellContent in modo tale che mostri un botton solo nel caso in cui il record abbia id == 33 ed il bottone in questione sia un delete.
Ovviamente l’esempio è banale e serve solo a comprendere le potenzialità di questo hack.
PS, il file che contiene questo componente, puoi metterlo dentro alla cartella /protected/components e chiamarlo MyButtonColumn.php. Verrà caricato automaticamente da yii.