У меня проблемы с загрузкой данных из базы данных.
Моя цель — реализовать 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 в поле ссылки таблицы).
Любые слова совета будут хороши, заранее спасибо!
Ты можешь использовать Посмотреть список и создать любую структуру, используя карты 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>
Таким образом, вы можете показать каждый проект как отдельную карту, используя файл представления.
Надеюсь это поможет
Других решений пока нет …