frontend/controllers/ArticleController.php
<?php
/*
* This file is part of the HomeFinanceV2 project.
*
* (c) Rafalsky.com <http://github.com/Rafalsky/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace frontend\controllers;
use common\models\Article;
use common\models\ArticleAttachment;
use frontend\models\search\ArticleSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
/**
* @author Eugene Terentev <eugene@terentev.net>
*/
class ArticleController extends Controller
{
/**
* @return string
* @throws \yii\base\InvalidParamException
*/
public function actionIndex()
{
$searchModel = new ArticleSearch();
$dataProvider = $searchModel->search(\Yii::$app->request->queryParams);
$dataProvider->sort = [
'defaultOrder' => ['created_at' => SORT_DESC]
];
return $this->render('index', ['dataProvider' => $dataProvider]);
}
/**
* @param $slug
* @return string
* @throws \yii\base\InvalidParamException
* @throws NotFoundHttpException
*/
public function actionView($slug)
{
$model = Article::find()->published()->andWhere(['slug' => $slug])->one();
if (!$model) {
throw new NotFoundHttpException;
}
$viewFile = $model->view ?: 'view';
return $this->render($viewFile, ['model' => $model]);
}
/**
* @param $id
* @return $this
* @throws NotFoundHttpException
* @throws \yii\web\HttpException
*/
public function actionAttachmentDownload($id)
{
$model = ArticleAttachment::findOne($id);
if (!$model) {
throw new NotFoundHttpException;
}
return \Yii::$app->response->sendStreamAsFile(
\Yii::$app->fileStorage->getFilesystem()->readStream($model->path),
$model->name
);
}
}