我正在使用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;
}
我想在我的主屏幕中显示此网址:
<?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
答案 0 :(得分:1)
我认为您的代码存在严重问题!你有这个:
public static function getImage() {
return Yii::$app->basePath . '/web/' . $this->Image;
}
在静态函数上使用$this
关键字没有任何意义。当您将功能设为static
时,您将其附加到class
而非object
和$this
指针指向instance
class
。
对于您的问题,我建议您在has-many
模型上定义User
关系:
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; ?>