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',
]);?>
ここでListViewを使用する必要はありません。単に試してみてください:
foreach ($dataProvider->models as $model) {
echo "addMarker({$model->lat_field}, {$model->lon_field});";
}
本当にListViewを使用したい場合は、_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);
...
}
}