Hey, i tried to make an search for my gridview… But when i search something nothing happens.
My index site with the gridview:
<?php
use yii\grid\GridView;
use yii\data\SqlDataProvider;
use yii\widgets\Pjax;
use app\models\EmailSearch;
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT * FROM email ORDER BY `email`.`id` DESC'
]);
$searchModel = new EmailSearch();
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'subject',
'emailTo',
'emailFrom',
[
'attribute' => 'text',
'value' => 'text'
],
]
]);
?>
my form:
<?php
namespace app\models;
use Yii;
class EmailForm extends \yii\db\ActiveRecord
{
public $subject;
public $emailTo;
public $emailFrom;
public $text;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'email';
}
public function getText() {
return $this->text;
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['subject', 'emailTo', 'emailFrom', 'text'], 'required'],
['emailTo', 'email'],
];
}
}
my search:
<?php
namespace app\models;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\EmailForm;
/**
* EmailSearch represents the model behind the search form of `app\models\EmailForm`.
*/
class EmailSearch extends EmailForm
{
public $text;
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['id'], 'integer'],
[['subject', 'emailTo', 'emailFrom', 'text'], 'safe'],
];
}
/**
* {@inheritdoc}
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = EmailForm::find();
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
]);
$query->andFilterWhere(['like', 'subject', $this->subject])
->andFilterWhere(['like', 'emailTo', $this->emailTo])
->andFilterWhere(['like', 'emailFrom', $this->emailFrom])
->andFilterWhere(['like', 'text', $this->text]);
return $dataProvider;
}
}
What am i doing wrong?
Best regards