问:Yii2从数据库加载数据

吉普赛人

我从数据库加载数据时遇到问题。我的目标是实现一个MVC,该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>

这样,您可以使用查看文件将每个项目显示为单独的卡片。希望这可以帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章