코드는 항상 유용하지만 사용자를 올바르게 이해하고 있다면 사용자 메시지를 표시하기 위해 비슷한 작업을 수행합니다. 로그인 한 사용자에게 보낸 메시지 만 찾도록 초기 필터를 설정 한 다음 사용자가 제목과 보낸 사람별로 메시지를 필터링하도록해야합니다. 나는 당신의 모델이나 기준의 이름을 모르는, 그래서 여기에 내가 할 방법에 대한 간단한 예는 다음과 같습니다
컨트롤러 :
public function actionIndex()
{
$model = new Message('search');
$model->unsetAttributes();
if(isset($_GET['Message']))
$model->attributes = $_GET['Message'];
// Set default filter
$model->msg_to = Yii::app()->user->id;
$this->render('index', array('model' => $model));
}
보기 :
$this->widget('zii.widgets.grid.CGridView', array(
'id'=> 'message-grid',
'dataProvider'=> $model->search(),
'filter'=> $model,
));
모델 :
public function search()
{
$criteria = new CDbCriteria;
$criteria->compare('from',$this->from);
$criteria->compare('msg_to',$this->msg_to);
$criteria->compare('from_name',$this->from_name,true);
$criteria->compare('subject',$this->subject,true);
$criteria->compare('body',$this->body,true);
$criteria->compare('read',$this->read);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array('pageSize'=>15),
));
}
기본 필터 기준이 매우 복잡하면 가장 좋은 방법은이 같은 모델의 4,489,: 당신의 기준 입력을 요구하는 경우 :
public function scopes()
{
return array(
'inbox' => array(
'condition' => 't.msg_to = :user_id',
'params' => array(':user_id' => Yii::app()->user->id),
'order' => 'min(t.read) ASC, t.posted_on DESC',
),
);
}
당신이 CGridView에 $model->inbox()->search()
을 작성합니다 그 범위를 사용하려면 대신 $model->search()
또한 다음
이
마지막 한가지 $model->msg_to = Yii::app()->user->id;
줄을 제거한다 사용자로부터 $ _GET 변수를 통해 "Parameterized Named Scopes"를 사용할 수 있습니다. 이 페이지의 섹션을 참조하십시오 : 당신은 같은 방법으로 사람들을 사용 http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes : $model->inbox()->search()