ProductController::actionView()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 16
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 10
nc 2
nop 1
dl 0
loc 16
c 0
b 0
f 0
cc 2
rs 9.9332
1
<?php
2
3
namespace app\controllers;
4
5
use yii\web\NotFoundHttpException;
6
use yii\filters\{AccessControl, VerbFilter};
7
use yii\helpers\ArrayHelper;
8
use app\models\Product;
9
10
/**
11
 * Class ProductController
12
 *
13
 * @package app\controllers
14
 */
15
class ProductController extends BaseController
16
{
17
    /**
18
     * @return array
19
     */
20
    public function behaviors()
21
    {
22
        return ArrayHelper::merge(parent::behaviors(), [
23
            'access' => [
24
                'class' => AccessControl::class,
25
                'rules' => [
26
                    [
27
                        'allow' => true,
28
                        'actions' => ['view'],
29
                        'roles' => ['?', '@'],
30
                    ],
31
                ],
32
            ],
33
            'verbs' => [
34
                'class' => VerbFilter::class,
35
                'actions' => [
36
                    'view' => ['get'],
37
                ],
38
            ],
39
        ]);
40
    }
41
42
    /**
43
     * Displays product page.
44
     *
45
     * @param $alias
46
     * @return string
47
     *
48
     * @throws NotFoundHttpException
49
     */
50
    public function actionView($alias)
51
    {
52
        $model = Product::find()->where([
53
            'alias' => $alias
54
        ])->andWhere([
55
            'active' => 1
56
        ])->one();
57
58
        if (null === $model) {
59
            throw new NotFoundHttpException('Product not fount with alias = '.$alias.'.');
60
        }
61
62
        $this->setMetaParams($model);
0 ignored issues
show
Bug introduced by
It seems like $model can also be of type array; however, parameter $model of app\controllers\BaseController::setMetaParams() does only seem to accept null|yii\db\ActiveRecord, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

62
        $this->setMetaParams(/** @scrutinizer ignore-type */ $model);
Loading history...
63
64
        return $this->render('view', [
65
            'model' => $model
66
        ]);
67
    }
68
}
69