【问题标题】:Foreach loop display data in mainforeach 循环在 main 中显示数据
【发布时间】:2016-06-24 03:45:24
【问题描述】:

我正在使用 foreach 循环,我想在

中制作一些横幅

前端/布局/主要

我创建了一个模型,其中包含这些静态函数:

public static function getUrl() {
    return Banner::find()->where(['Rel_User' => Yii::$app->user->identity->Id])->all();
}

public static function getImage() {
    return Yii::$app->basePath . '/web/' . $this->Image;
}

我想在我的主目录中显示这个 URL:

<?php foreach (Banner::getUrl() as $key): ?>

    <div class="banner">
        <a href="<?= $key['Url'] ?>" title="">
            <img src="<?=Url::base(true)?>/img/banner.jpg" alt=""></a>
    </div>
<?php endforeach; ?>

问题是我有 3 个横幅分配给登录的用户,这个循环只显示一个横幅。我做错了什么?我的第二个问题是,我应该怎么做才能只显示数据库中的 URL,因为现在 URL 看起来像:

http://my-page.frontend.localhost/www.google.com

但在我的数据库中是:

url= www.google.com

【问题讨论】:

  • 对于非外部链接的问题,需要在= $key['Url'] ?>前加上http://
  • 为什么在 foreach 中重复 3 次相同的代码?为什么一开始没有 div ?

标签: php layout foreach yii2


【解决方案1】:

我认为你的代码有严重的问题!你有这个:

public static function getImage() {
    return Yii::$app->basePath . '/web/' . $this->Image;
}

在静态函数上使用$this 关键字没有任何意义。当您将函数设为static 时,您将其附加到class 而不是object$this 指针指向instanceinstance

对于您的问题,我建议在您的 User 模型上定义一个 has-many 关系,如下所示:

public function getBanners()
{
    return $this->hasMany(Banner::className(), ['Rel_User' => 'id']);
}

在你的主视图上使用类似这样的代码:

<?php foreach (Yii::$app->user->identity->banners as $banner): ?>
    <div class="banner">
        <!-- Use your Banner model attributes from $banner variable -->
    </div>
<?php endforeach; ?>

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 2019-09-24
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    相关资源
    最近更新 更多