I have advance search page with all the fields declared as search variables.
I am holding all the variables in the session.
All i want to know is on click of submit the view page fields will be saved in to session variables. So on grid pagination and sort using the session variables it will load the data.
But i want to clear the session on click of the link for advance search page? How to do that?
Controller.php
public function actionAdvance_search()
{
$modelAdvSearchFinder = new AdvSearchFinder;
print_r($_GET);
if(isset($_POST) && isset($_POST['AdvSearchFinder']['submit']))
{
$this->clearAdvSearchSessionVar();
Yii::app()->session['id'] = ( $_POST['AdvSearchFinder']['id'])? Yii::app()->session['id'] = $_POST['AdvSearchFinder']['id']:"";
Yii::app()->session['name'] = ( $_POST['AdvSearchFinder']['name'])? Yii::app()->session['name'] = $_POST['AdvSearchFinder']['name']:"";
Yii::app()->session['age'] = ( $_POST['AdvSearchFinder']['age'])?Yii::app()->session['age'] = $_POST['AdvSearchFinder']['age']:"";
Yii::app()->session['class'] = ( $_POST['AdvSearchFinder']['class'])? Yii::app()->session['class'] = $_POST['AdvSearchFinder']['class']:"";
Yii::app()->session['section'] = ( $_POST['AdvSearchFinder']['section'])? Yii::app()->session['section'] = $_POST['AdvSearchFinder']['section']:"";
Yii::app()->session['Email'] = ( $_POST['AdvSearchFinder']['Email'])? Yii::app()->session['Email'] = $_POST['AdvSearchFinder']['Email']:"";
$modelAdvSearchFinder->attributes = $_POST['AdvSearchFinder'];
}
$id = Yii::app()->session['id'];
$name = Yii::app()->session['name'];
$age = Yii::app()->session['age'];
$class = Yii::app()->session['class'];
$section = Yii::app()->session['section'];
$Email = Yii::app()->session['Email'];
$criteria=new CDbCriteria(array('distinct'=>true,));
$criteria->compare('id',$id,true);
$criteria->compare('name',$name,true);
$criteria->compare('age',$age,true);
$criteria->compare('class',$class,true);
$criteria->compare('sectionPerson',$section,true);
$criteria->compare('Email',$Email,true);
if($id != "" || $name != "" || $age != "" || $class != "" || $section != "" || $Email != "" || $TelePhone1 != "" || $TelePhone2 != "" || $Fax != "" || $Address != "" || $State != "" || $Suburb != "" || $PostCode != "" || $Include_inactive != "F")
{
$modelSearch= new CActiveDataProvider("tblClass", array(
'criteria'=>$criteria,
));
}
else
{
$modelSearch = "";
$this->clearAdvSearchSessionVar();
}
$this->render('advance_search',array('modelSearch' => $modelSearch,'modelAdvSearchFinder'=>$modelAdvSearchFinder));
}
model.php
class AdvSearchFinder extends CFormModel
{
public $id;
public $name;
public $age;
public $class;
public $section;
public $Email;
public function rules()
{
return array(
array('id,name,age,class,section,Email', 'safe'),
);
}
public function attributeLabels()
{
return array(
'id'=>'ID',
'name'=>'Name',
'age'=>'AGE',
'class'=>'Class',
'section'=>'section',
'Email'=>'Email'
);
}
}
Building on Orlymee’s answer, you can wrap this in a check in your controller: