/** * Creates data provider instance with search query applied * @param array $params * @return ActiveDataProvider */ public function search($params = null) { $query = WidgetCarouselItem::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'carousel_id' => $this->carousel_id, 'status' => $this->status, 'order' => $this->order]); $query->andFilterWhere(['like', 'path', $this->path])->andFilterWhere(['like', 'url', $this->url])->andFilterWhere(['like', 'caption', $this->caption]); return $dataProvider; }
/** * @throws InvalidConfigException */ public function init() { if (!$this->key) { throw new InvalidConfigException(); } $cacheKey = [WidgetCarousel::className(), $this->key]; $items = \Yii::$app->cache->get($cacheKey); if ($items === false) { $items = []; $query = WidgetCarouselItem::find()->joinWith('carousel')->where(['{{%widget_carousel_item}}.status' => 1, '{{%widget_carousel}}.status' => WidgetCarousel::STATUS_ACTIVE, '{{%widget_carousel}}.key' => $this->key])->orderBy(['order' => SORT_ASC]); foreach ($query->all() as $k => $item) { /** @var $item \common\models\WidgetCarouselItem */ if ($item->path) { $items[$k]['content'] = Html::img($item->getImageUrl()); } if ($item->url) { $items[$k]['content'] = Html::a($items[$k]['content'], $item->url, ['target' => '_blank']); } if ($item->caption) { $items[$k]['caption'] = $item->caption; } } \Yii::$app->cache->set($cacheKey, $items, 60 * 60 * 24 * 365); } $this->items = $items; parent::init(); }