Example #1
0
 /**
  * Поиск по категории
  * @param array $values массив значений атрибута
  * @param string $attr имя атрибута категорий по которому происходит фильтрация
  * @return $this
  */
 public function bySections($values, $attr = "id")
 {
     $class = $this->modelClass;
     $table = $class::tableName();
     $relTable = NewsSection::tableName();
     $this->published();
     if ($values) {
         $this->joinWith('sections', true)->andWhere(["{{%{$relTable}}}.{{%{$attr}}}" => $values])->groupBy("{{%{$table}}}.{{%id}}");
     }
     return $this;
 }
 /**
  * Действия
  * @return array
  */
 public function actions()
 {
     $class = NewsSection::className();
     return ['index' => ['class' => crud\TAdmin::className(), 'modelClass' => $class], 'create' => ['class' => crud\TCreate::className(), 'modelClass' => $class], 'update' => ['class' => crud\TUpdate::className(), 'modelClass' => $class], 'view' => ['class' => crud\View::className(), 'modelClass' => $class], 'delete' => ['class' => crud\TDelete::className(), 'modelClass' => $class], 'groupdelete' => ['class' => crud\TGroupDelete::className(), 'modelClass' => $class], 'up' => ['class' => crud\TUp::className(), 'modelClass' => $class], 'down' => ['class' => crud\TDown::className(), 'modelClass' => $class], 'replace' => ['class' => crud\TReplace::className(), 'modelClass' => $class], 'editable' => ['class' => crud\XEditable::className(), 'modelClass' => $class]];
 }
Example #3
0
 /**
  * Возвращает категории новостей для dropDown
  * @return array
  * @throws \yii\base\InvalidConfigException
  */
 public function getSectionsList()
 {
     $model = \Yii::createObject(NewsSection::className());
     return $model->getDataByParent();
 }
Example #4
0
 /**
  * Связь с категориями
  * @return \yii\db\ActiveQueryInterface
  */
 public function getSections()
 {
     return $this->hasMany(NewsSection::className(), ['id' => 'section_id'])->viaTable('news_to_sections', ['news_id' => 'id']);
 }
Example #5
0
<?php

use app\modules\news\models;
return ['controllerMap' => ['migrate' => ['migrationLookup' => ['@webapp/modules/news/migrations']]], 'modules' => ['news' => ['class' => app\modules\news\News::className(), 'controllerNamespace' => 'app\\modules\\news\\controllers', 'modules' => ['admin' => ['class' => app\modules\news\modules\admin\Admin::className(), 'controllerNamespace' => 'app\\modules\\news\\modules\\admin\\controllers', 'menuItems' => function () {
    return [['label' => Yii::t('news/app', 'News module'), 'icon' => 'glyphicon glyphicon-align-justify', 'items' => [['label' => Yii::t('news/app', 'News'), 'url' => ['/admin/news/news'], "permission" => ["listModels", ["model" => Yii::createObject(models\News::className())]]], ['label' => Yii::t('news/app', 'News sections'), 'url' => ['/admin/news/news-section'], "permission" => ["listModels", ["model" => Yii::createObject(models\NewsSection::className())]]]]]];
}]]]], 'components' => ['i18n' => ['translations' => ['news/*' => ['class' => 'yii\\i18n\\PhpMessageSource', 'basePath' => '@webapp/modules/news/messages', 'fileMap' => ['news/app' => 'app.php']]]], 'urlManager' => ['rules' => ['news/<section:[A-z0-9_-]+>/<code:[A-z0-9_-]+>' => 'news/news/detail', 'news/<section:[A-z0-9_-]+>' => 'news/news/index', 'news' => 'news/news/index']]]];
Example #6
0
 /**
  * Отображение детальной новости
  * @param string $code символьный идентификатор новости
  * @param string $section символьный идентификатор категории новости
  * @return string
  * @throws \yii\web\NotFoundHttpException
  */
 public function actionDetail($code, $section)
 {
     $model = News::find()->published()->andWhere(["code" => $code])->one();
     if (!$model) {
         throw new NotFoundHttpException();
     }
     $sectionModel = NewsSection::find()->published()->andWhere(["code" => $section])->one();
     $this->view->addBreadCrumbs($sectionModel->getBreadCrumbsItems($sectionModel, function ($model) {
         return ['/news/news/index', 'section' => $model->code];
     }));
     $this->view->addBreadCrumb(["label" => $model->title, "url" => Url::toRoute(["/news/news/detail", "code" => $code, "section" => $section])]);
     $this->view->registerMetaTags($model);
     return $this->render('detail', ["model" => $model, "detailImageWidth" => $this->detailImageWidth]);
 }