Yii Framework Forum: ricarca parziale - Yii Framework Forum

Jump to content

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

ricarca parziale Rate Topic: -----

#1 User is offline   Duma 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 39
  • Joined: 13-March 11

Posted 21 March 2011 - 09:59 AM

Ragazzi vorrei riutilizzare la pagina "Manage User" creata attraverso Gii, ovvero ho creato un utente gli ho assegnato la pagina
"Manage User" duplicata ovviamente rinominata aggiunta nel controller e quindi funzionante ma vorrei che l'utente vedesse
solo alcuni utenti e non tutti, quindi vorrei applicare un filtro su una colonna, è possibile?
0

#2 User is offline   sensorario 

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

Posted 21 March 2011 - 10:31 AM

Non serve duplicarla: quello che devi fare, è semplicemente modificare il controller in modo tale che dia alla stessa view un model differente.

Io per esempio, nel controller delle News, volevo apparissero tutte le news attive ed ho fatto in questo modo:
  public function actionIndex() {
    if (!Yii::app()->user->isGuest) {
      $dataProvider = new CActiveDataProvider('News');
    } else {
      $dataProvider = new CActiveDataProvider('News', array(
                  'criteria' => array(
                      'condition' => "attiva = 1 ",
                  ),));
    }
    $this->render('index', array(
        'dataProvider' => $dataProvider,
    ));
  }


E' il bello dell'MVC: non serve modificare la view, ma solo il model o solo il controller.
0

#3 User is offline   Duma 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 39
  • Joined: 13-March 11

Posted 21 March 2011 - 10:40 AM

Io nel controller ho questo e vorrei poter filtrare la colonna "company" con un valore....
e non capisco dove dovrei aggiungere il filtro alla colonna, intanto ti ringrazio per la tua pazienza e
sprattutto per la tua disponibilità.

public function actionAdmin()
{
$model=new User('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['User']))
$model->attributes=$_GET['User'];

$this->render('admin',array(
'model'=>$model,
));
}
0

#4 User is offline   Duma 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 39
  • Joined: 13-March 11

Posted 21 March 2011 - 11:27 AM

View Postsensorario, on 21 March 2011 - 10:31 AM, said:

Non serve duplicarla: quello che devi fare, è semplicemente modificare il controller in modo tale che dia alla stessa view un model differente.

Io per esempio, nel controller delle News, volevo apparissero tutte le news attive ed ho fatto in questo modo:
  public function actionIndex() {
    if (!Yii::app()->user->isGuest) {
      $dataProvider = new CActiveDataProvider('News');
    } else {
      $dataProvider = new CActiveDataProvider('News', array(
                  'criteria' => array(
                      'condition' => "attiva = 1 ",
                  ),));
    }
    $this->render('index', array(
        'dataProvider' => $dataProvider,
    ));
  }


E' il bello dell'MVC: non serve modificare la view, ma solo il model o solo il controller.



allora nella User.php ho
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.

$criteria=new CDbCriteria;

$criteria->compare('id',$this->id);
$criteria->compare('username',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('salt',$this->salt,true);
$criteria->compare('email',$this->email,true);
$criteria->compare('company',$this->company,true);
$criteria->compare('profile',$this->profile,true);

return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
));
}


quindi ho pensato di modificare il controller con

public function actionAdminhold() {
$model=new User('search', array(
'criteria' => array(
'condition' => "company = azienda ",
),));

$this->render('adminhold',array(
'model'=>$model,
));

}

ma non cambia nulla....
0

#5 User is offline   sensorario 

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

Posted 21 March 2011 - 12:00 PM

Nel tuo caso, credo sia meglio mettere mano al metodo search.
public function actionAdmin()
{
$model=new User('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['User']))
$model->attributes=$_GET['User'];

$this->render('admin',array(
'model'=>$model,
));
} 


Se noti questa action carica il model User con il parametro search. Non ne sono sicuro ma credo tu debba mettere mano a quello del tipo:
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.

$criteria=new CDbCriteria;

$criteria->compare('id',$this->id);
$criteria->compare('username',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('salt',$this->salt,true);
$criteria->compare('email',$this->email,true);
$criteria->compare('company',NOME_COMPAGNIA,true);
$criteria->compare('profile',$this->profile,true);

return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
));
}

0

#6 User is offline   sensorario 

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

Posted 21 March 2011 - 12:02 PM

Ti faccio anche notare che
$criteria->compare('company',NOME_COMPAGNIA,true);
equivale a
'criteria' => array(
'condition' => "company = 'NOME_COMPAGNIA' ",
),

1

#7 User is offline   Duma 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 39
  • Joined: 13-March 11

Posted 21 March 2011 - 12:17 PM

mhmhm non funziona...
0

#8 User is offline   Duma 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 39
  • Joined: 13-March 11

Posted 21 March 2011 - 02:15 PM

Ok risolto grazie mille!!!
illuminante come al solito!
0

#9 User is offline   sensorario 

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

Posted 22 March 2011 - 04:14 AM

Ci posteresti qui la tua soluzione? Non per ficcare il naso nel tuo codice, ma per condividerla con chi arriverà qui a leggere questo post e potrà trovarla. Se sbirci tra gli utenti di questo forum, scopri che c'è una quantità enorme di persone che si registra, legge, e non scrive quasi mai un post. Per loro, dobbiamo preoccuparci di postare anche le nostre soluzioni così da aiutarli e dare il nostro supporto a tutti.
0

#10 User is offline   Duma 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 39
  • Joined: 13-March 11

Posted 23 March 2011 - 02:28 AM

Si hai ragione!
Nel models ho inserito come mi avevi detto quel codice solo che non mi veniva perchè non era una costante ma era relativa all'utente con cui mi loggavo.
Ho risolto in questo modo...
public function searchhold()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.


$ushold=$this->thisUser();
$criteria=new CDbCriteria;

$criteria->compare('id',$this->id);
$criteria->compare('username',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('salt',$this->salt,true);
$criteria->compare('email',$this->email,true);
$criteria->compare('company',$ushold->company,true);
$criteria->compare('profile',$this->profile,true);

return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
));
}


private function thisUser()
{
$user=User::model()->find('LOWER(username)=?',array(strtolower(Yii::app()->user->name)));
return $user;
}
0

#11 User is offline   sensorario 

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

Posted 23 March 2011 - 03:55 AM

Sicuro che non ti basti usare il codice Yii::app()->user per ottenere tutte le informazioni dall'utente corrente?
0

#12 User is offline   Duma 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 39
  • Joined: 13-March 11

Posted 23 March 2011 - 04:14 AM

Ottimo suggerimento ci provo
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