Используя yii2, я создал модель и CRUD, используя gii.
Я хочу использовать foreach или while loop в моем VIEW для отображения данных в следующем формате
Для каждой строки в таблице базы данных
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', ]);?>
Не нужно использовать ListView здесь, вы должны просто попробовать:
foreach ($dataProvider->models as $model) { echo "addMarker({$model->lat_field}, {$model->lon_field});"; }
Если вы действительно хотите использовать ListView, вы можете просто отредактировать _index
просмотра _index
.
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; }
$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); ... } }