web-dev-qa-db-ja.com

Yii2はforeachループを使用してデータを表示します

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,
    ]);
}

以下を使用して、データベース内のすべてのデータ/行を表示するリストビューを使用してデータを表示できますが、周囲にhtmlがあり、希望する形式で出力されないことは明らかです。

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

ここでListViewを使用する必要はありません。単に試してみてください:

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

本当にListViewを使用したい場合は、_indexビューファイルを編集するだけです。

15
soju
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
vishuB
$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

1