3

私のプロジェクトには2つのテーブルがMainAdsありAdsImage、その構造は次のとおりです

MainAds       AdsImage

id            id
category      main_ads_id
description   image
title
price

そして、私は次のリストビューを持っています

<div class="container">
    <div class="row">
        <div class="item">
            <div class="well">
                    <img class="img-responsive" src="http://placehold.it/700x400" alt="">
                    <span>$21.00</span>
                <h4>
                    <a href="#">Project Name</a>
                </h4>
            </div>
        </div>
    </div>
</div>

これはテンプレートに他ならず、テーブルからすべてのデータを表示したいadvertisementので、どうすればそれを行うことができますか? そのデータをビューファイルに表示するにはどうすればよいですか

これまでにこれを試しましたが、正しく機能していません

<?php foreach ($dataProvider->models as $model) {
    echo "<div class='item'>" +
            "<div class='well'>" +
                "<img class='img-responsive' src='../uploads'.'$imagemodel->image'. alt=''>" +
                    "<span>$21.00</span>" +
                    "<h4>" +
                        "<a href='#'>Project Name</a>" +
                    "</h4>" +
                "</div>"+
            "</div>";
       }
?>

ビューファイルなどにデータを表示する正しい方法はありますか

を使用してそれを行う方法は知っていますdetailviewが、異なるモデルを使用してビュー ページでカスタム レイアウトを使用する方法がわかりません。

以下の回答でDouble Hが提案したことを試しましたが、以下のようなエラーが発生しています

http://i.stack.imgur.com/UcVtR.png

4

1 に答える 1

3

次のようにモデルにリレーションを作成しますMainAds: -

public function getAdsImage(){
    $this->hasOne(AdsImage::className() ,['id' => 'main_ads_id']);
}

コントローラーアクションIndexを次のようにします

public function actionIndex(){
    $query = Addresses::find()->joinWith(['adsImage']);

    $dataProvider = new ActiveDataProvider([
            'query' => $query,

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

index.phpビューで

<?= \yii\widgets\ListView::widget([
        'dataProvider' => $dataProvider,
        'itemView' => 'listview'
    ]); ?>

listview.phpファイルを次のように変更します

<div class="container">
    <div class="row">
        <div class="item">
            <div class="well">
                    <?php if(ArrayHelper::getValue($model->adsImage,'image') !== null):?>

       <?= \yii\helpers\Html::img($model->adsImage->image,['class' => 'img-responsive' ,'alt' =>''])?>

    <?php endif; ?>
                    <span>$<?= $model->price?></span>
                <h4>
                    <a href="#"><?= $model->title?></a>
                </h4>
            </div>
        </div>
    </div>
</div>
于 2015-11-03T04:48:55.177 に答える