/** * Метод просмотра категории блога и списка связанных статей * Если категория не будет найдена то будет вызвано 404 исключение * @param integer $id уникальный идентификатор статьи * @throws NotFoundHttpException если запись не будет найдена * @return mixed */ public function actionView($id = FALSE) { if ($id == FALSE && isset($_GET) && array_key_exists('id', $_GET)) { $id = $GET['id']; } elseif ($id == FALSE && !isset($_GET)) { throw new \yii\web\HttpException(404, 'Страница не найдена', 404); } $categorie = Categories::find()->where(['id' => $id])->with('articles')->active(); $countQuery = clone $categorie; $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => Yii::$app->params['pageSize']]); $pages->pageSizeParam = false; $post = $categorie->offset($pages->offset)->limit($pages->limit)->all(); $categorie = $categorie->one(); if (!$categorie instanceof Categories) { throw new \yii\web\HttpException(404, 'Страница не найдена', 404); } return $this->render('view', ['categorie' => $categorie, 'pages' => $pages]); }
use yii\widgets\ActiveForm; use app\modules\admin\modules\contents\models\Articles; use app\modules\admin\modules\contents\models\Categories; /* @var $this yii\web\View */ /* @var $model app\modules\admin\modules\contents\models\articles */ /* @var $form yii\widgets\ActiveForm */ ?> <div class="articles-form"> <?php $form = ActiveForm::begin(); ?> <?php echo $form->field($model, 'categories__id')->dropDownList(Categories::getCategorieslList(), ['prompt' => 'Выберите категорию']); ?> <?php echo $form->field($model, 'name')->textInput(['maxlength' => true]); ?> <?php echo $form->field($model, 'short_text')->textarea(['rows' => 6]); ?> <?php echo $form->field($model, 'full_text')->textarea(['rows' => 30]); ?> <?php
public function init() { parent::init(); $this->categories = Categories::find()->active()->all(); }
/** * Метод поиска категории по уникальному идентификатору (первичному ключу) * Если категория не будет найдена то будет вызвано 404 исключение * @param integer $id уникальный идентификатор категории блога * @return articles экземпляр класса Аrticles * @throws NotFoundHttpException если запись не будет найдена */ protected function findModel($id) { if (($model = Categories::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
use yii\grid\GridView; use app\modules\admin\modules\contents\models\Articles; use app\modules\admin\modules\contents\models\Categories; /* @var $this yii\web\View */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = 'Статьи'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="articles-index"> <h1><?php echo Html::encode($this->title); ?> </h1> <p> <?php echo Html::a('Создать статью', ['create'], ['class' => 'btn btn-success']); ?> </p> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'name', ['attribute' => 'categories__id', 'value' => function ($dataProvider, $key, $index, $column) { return Categories::getCategoriesName($dataProvider->categories__id); }], 'date_public:date', 'short_text:ntext', ['attribute' => 'is_active', 'value' => function ($dataProvider, $key, $index, $column) { return $dataProvider->is_active == '1' ? 'Активная' : 'Не активная'; }], ['class' => 'yii\\grid\\ActionColumn']]]); ?> </div>
/* @var $this yii\web\View */ /* @var $model app\modules\admin\modules\contents\models\articles */ $this->title = $model->name; $this->params['breadcrumbs'][] = ['label' => 'Статьи', 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; ?> <div class="articles-view"> <h1><?php echo Html::encode($this->title); ?> </h1> <p> <?php echo Html::a('К списку статей', ['index', 'id' => $model->id], ['class' => 'btn btn-primary']); ?> <?php echo Html::a('Редактировать', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']); ?> <?php echo Html::a('Удалить', ['delete', 'id' => $model->id], ['class' => 'btn btn-danger', 'data' => ['confirm' => 'Вы действительно хотите удалить эту статью?', 'method' => 'post']]); ?> </p> <?php echo DetailView::widget(['model' => $model, 'attributes' => [['attribute' => 'categories__id', 'value' => Categories::getCategoriesName($model->categories__id)], 'name', 'date_public:date', 'short_text:ntext', 'full_text:ntext', ['attribute' => 'is_active', 'value' => $model->is_active ? 'Актиная' : 'Не активная']]]); ?> </div>
/** * Метод возвращает название категори * @param integer $id уникальный идентификатор категории блога * @return string название категори */ public static function getCategoriesName($id) { $model = Categories::findOne($id); return $model->name; }