Yii2 使用每个循环显示数据

Posted

技术标签:

【中文标题】Yii2 使用每个循环显示数据【英文标题】:Yii2 display data using for each loop 【发布时间】:2015-04-21 11:40:27 【问题描述】:

使用 yii2 我使用 gii 创建了一个模型和 CRUD。

我想在我的 VIEW 中使用 foreach 或 while 循环以以下格式显示数据

对于数据库表中的每一行

echo("addMarker($lat_field, $lon_field);\n");

我有一个使用以下控制器操作呈现的索引页面。

    public function actionIndex()

    $this->layout = 'directory';

    $searchModel = new ShopDirectorySearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

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

我可以使用以下内容通过 listview 显示数据,它显示数据库中的所有数据/行,但是它周围有 html,并且显然没有以我希望的格式输出。

    <?=  ListView::widget([
 'dataProvider' => $dataProvider,
 'itemOptions' => ['class' => 'col-xs-6 col-sm-3'],
 'itemView' => '_index',
]);?>

【问题讨论】:

【参考方案1】:
if(!empty($st_data))
    
        foreach($st_data as $row)
        
            echo 'Country Name: '.$row['country_name'].'</br>';
            echo 'State Name: '.$row['state_name'].'</br>';
            echo 'City Name: '.$row['city_name'].'</br>';
            echo '</br>';
        
        exit;
    

【讨论】:

【参考方案2】:
$rows = ShopDirectory::findAll();
if(!empty($rows))

  foreach($rows as $row)
  
    $lat = $row->lat;
    $lon = $row->lon;

    $this->view->registerJs('addmarker("'.$lat.'", "'.$lon.'"."\n");', yii\web\View::POS_END);
    ...
  

http://www.yiiframework.com/forum/index.php/topic/61940-simple-while-loop-to-list-all-rows/page__view__findpost__p__274731

【讨论】:

【参考方案3】:

此处无需使用 ListView,您只需尝试一下:

foreach ($dataProvider->models as $model) 
    echo "addMarker($model->lat_field, $model->lon_field);";

如果你真的想使用 ListView,你可以简单地编辑 _index 视图文件。

【讨论】:

您的解决方案看起来很完美我不想使用列表视图我只是不确定如何使用其中一个小部件在 yii2 中显示数据。 感谢它对我有用

以上是关于Yii2 使用每个循环显示数据的主要内容,如果未能解决你的问题,请参考以下文章

php 循环遍历Yii2中的大量数据库行

Yii2中的Active Record可以批量插入数据吗

如何在DetailView Yii2中添加循环?

将表单中每个循环产品的数据显示为值,而不是 Angular 中的占位符

使用 foreach 循环添加每列的总和并在表格底部显示每个总计

每个循环的组合框