php - Q: Yii2 从数据库加载数据
问题描述
我在从数据库加载数据时遇到问题。我的目标是实现一个 MVC,它在视图中动态显示存储在 db 表中的值。因此,在项目模型中,我有以下代码:
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)。任何建议的话都会很好,在此先感谢!
解决方案
您可以使用ListView并使用 UiKit 卡片或材料设计创建任何类型的结构。
ListView 小部件用于显示来自数据提供者的数据。每个数据模型都使用指定的视图文件呈现。由于它提供了开箱即用的分页、排序和过滤等功能,因此向最终用户显示信息和创建数据管理 UI 都很方便。
一个典型的用法如下:
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>
这样,您可以使用视图文件将每个项目显示为单独的卡片。希望这可以帮助
推荐阅读
- javascript - 将标签文本值与 jquery 中的变量进行比较
- c++ - Why there is no output showing on my codeblocks?
- tomcat - tomcat8 unpack war总是删除我的smlink文件
- php - “重定向到...”重定向 LARAVEL 5.2 中的中间页面
- jquery - 单击 td 中的 Datepicker,失去焦点后,应在表中设置所选值
- html - 如何使英文文本与日文文本显示相同的大小?
- c - 如何检查C中的pow溢出?
- amazon-web-services - 如何在 AWS CodeCommit 中为用户禁用“创建拉取请求”按钮?
- c# - C# Azure 函数 ILoggerFactory 不使用参考库记录
- google-app-engine - app.yaml 配置以关闭 GAE 的空闲运行实例