[Risolto] Cgridview: Inserire Un 'where' Predefinito Inmodificabile

Avendo ora sia l’RBAC che la lista utenti, i pezzi nuovi del software li stiamo gestendo direttamente a permissione, etc… sembra che piano piano stiamo ingranando.

gli utenti che potranno accedere alla lista di gestione utenti, e quindi anche cancellarli !!!, NON DEVONO potere verdere l’utente ‘root’, quindi mi sono detto che basterebbe avere un WHERE username <> ‘root’ nella lista admin ed il gioco è fatto… ma come si fa ?

Ho provato in search con




$criteria->condition='username<>"root"';



ma questo fa si che il filtro per utente non funzioni più (in compenso i record erano correttamente uno in meno)

Sto cercando di capire come usare questo metodo

addSearchCondition

considerando che ora il mio codice è tipo cosi:




$dataProvider=new CActiveDataProvider('User', 

		        array(

                    'criteria' => array(

                                    'select' => 'id, username, realname, email, companyId, languageId, isActive, isNotified, defaultModulesId',

                                    'order' => 'username ASC',

                                    ),

		            

		             )

	    );



come aggiungo all’array ‘criteria’ un “WHERE username <> ‘root’” ?

dovresti inserire una condition, se ho capito bene quello che devi fare.

probabilmente si, difatti ci sto provando da alcune ore, ma come ?

è la sintassi che non capisco, e dalla manualistica, ovviamente, non si capisce. …


$criteria= new CDbCriteria;

$criteria->select='id, username, realname, email, companyId, languageId, isActive, isNotified, defaultModulesId';


$criteria->addCondition('username <> "root"');




$dataProvider=new CActiveDataProvider('User', 

                        array(

                    'criteria' =>$criteria,

                    'sort'=>array('defaultOrder'=>'username ASC')

            );