Q: Yii2 загрузить данные из базы данных

У меня проблемы с загрузкой данных из базы данных.
Моя цель — реализовать MVC, который динамически отображает в представлении значения, хранящиеся в таблице БД. Итак, в модели проекта у меня есть этот код:

     public function search($params)
{
$query = project::find();

$dataProvider = new ActiveDataProvider([
'query' => $query,
]);

$this->load($params);

if (!$this->validate()) {

return $dataProvider;
}

// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
'position' => $this->position,
'created_at' => $this->created_at,
'is_deleted' => $this->is_deleted,
]);

$query->andFilterWhere(['ilike', 'title', $this->title])
->andFilterWhere(['ilike', 'description', $this->description])
->andFilterWhere(['ilike', 'link', $this->link])
->andFilterWhere(['ilike', 'image', $this->image]);

return $dataProvider;
}

В контроллере:

     public function actionIndex()
{
$searchModel = new SeachProject();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}

И в представлении (index.php):

 <?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'title',
'description',
'image',
],
]); ?>

Ну, это работает, но мне нужно печатать значения в карты Uikit, а не через ограничения Gridview (что на самом деле является единственным способом, который я знаю). У меня должна быть одна карточка для каждой записи в таблице с изображением (URL в поле изображения таблицы) и ссылкой (URL в поле ссылки таблицы).
Любые слова совета будут хороши, заранее спасибо!

1

Решение

Ты можешь использовать Посмотреть список и создать любую структуру, используя карты UiKit или дизайн материалов.

Виджет ListView используется для отображения данных от поставщика данных. каждый
модель данных отображается с использованием указанного файла представления. С тех пор
обеспечивает такие функции, как нумерация страниц, сортировка и фильтрация
поле, это удобно как для отображения информации для конечного пользователя, так и для создания
Пользовательский интерфейс управления данными.

Типичное использование выглядит следующим образом:

use yii\widgets\ListView;
use yii\data\ActiveDataProvider;


echo ListView::widget([
'dataProvider' => $dataProvider,
'itemView' => '_ui-card',
'viewParams' => [
'fullView' => true,
'context' => 'main-page',
],
]);

_ui-card Просмотр файла может содержать следующие основные карты HTML:

<?php
use yii\helpers\Html;
use yii\helpers\HtmlPurifier;
?>
<div class="uk-card">
<div class="uk-card-header">
<h3 class="uk-card-title"><?= Html::encode ( $model->title ) ?></h3>
</div>
<div class="uk-card-body"><img src="<?= Html::encode ( $model->image ) ?>"><?= Html::encode ( $model->link ) ?></div>
<div class="uk-card-footer"></div>
</div>

Таким образом, вы можете показать каждый проект как отдельную карту, используя файл представления.
Надеюсь это поможет

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]