Нужна подсказка. Осваиваю Yii2 и тут возникла проблема. Есть таблица USER и GridView c данными из этой таблицы - фильтрация работает. И есть таблица SEND и GridView c данными из этой таблицы - тут он никак не выполняет фильтрацию. Код брался из класса User и SearchUser.
КОНТРОЛЛЕР
public function actionAllsend(){
if(isAdmin()){
$searchModel = new SendSearch();
//Получим записи по конкретному пользователю
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('allsend', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
else{
return $this->redirect(['site/index']);
}
}
МОДЕЛЬ
public function search($params, $userName = null)
{
$this->load($params);
// Получим все записи либо записи по конкретному пользователю
if($userName == null){
$query = Send::find();
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
]);
$query->andFilterWhere(['like', 'user_id', $this->user_id])
->andFilterWhere(['like', 'type', $this->type])
->andFilterWhere(['like', 'date', $this->date])
->andFilterWhere(['like', 'status', $this->status]);
}
else{
$query = Send::find();
$query->andFilterWhere([
'user_id' => $userName,
]);
}
// echo $query;
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'forcePageParam' => false,
'pageSizeParam' => false,
'pageSize' => 20
]
]);
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;
}
return $dataProvider;
}
ВЬЮХА
<div class="admin-all-send">
<h1><?= Html::encode($this->title) ?></h1>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
//['class' => 'yii\grid\SerialColumn'],
['attribute'=>'id', "label"=>'Уникальный номер рассылки'],
['attribute'=>'date', "label"=>'Дата транзакции'],
['attribute'=>'user_id', 'label'=>'Чья рассылка'],
['attribute'=>'type', 'label'=>'Тип рассылки'],
['attribute'=>'status', "label" => "Статус рассылки"],
['attribute'=>'price', 'label'=>'Цена рассылки'],
['class' => 'yii\grid\ActionColumn',
'template' => '{view} {delete}',
],
],
]); ?>
</div>
Нашел проблему. Косяк в модели был. Так работате:
public function search($params, $userName = null)
{
$this->load($params);
// Получим все записи либо записи по конкретному пользователю
if($userName == null){
$query = Send::find();
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
]);
}
else{
$query = Send::find();
$query->andFilterWhere([
'user_id' => $userName,
]);
}
$query->andFilterWhere(['like', 'user_id', $this->user_id])
->andFilterWhere(['like', 'type', $this->type])
->andFilterWhere(['like', 'date', $this->date])
->andFilterWhere(['like', 'status', $this->status]);
// echo $query;
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'forcePageParam' => false,
'pageSizeParam' => false,
'pageSize' => 20
]
]);
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;
}
return $dataProvider;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не пойму как отправлять вложенные файлы в формеКод
Есть такая функция, которая разбивает строку на части заданной длинны: