从数据库加载数据时遇到问题。 我的目标是实现一个MVC,该MVC在视图中动态显示db表中存储的值。因此,在Project模型中,我有以下代码:
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)。 任何建议的话都会很好,在此先感谢!
答案 0 :(得分:2)
您可以使用ListView并使用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>
这样,您可以使用查看文件将每个项目显示为单独的卡。 希望这会有所帮助