• RBAC привязка ролей к пользователю-почему нет доступа?

    @Maila Автор вопроса
    Максим Тимофеев,
    Если хотите открыть доступ в admin.site.com, то зачем Вы дали код другого контролера?

    для admin.site.com так понимаю, jотвечает SiteController?

    site\yii2\\backend\controllers\Site Controllers
    <?php
    namespace backend\controllers;
    
    use Yii;
    use yii\web\Controller;
    use yii\filters\VerbFilter;
    use yii\filters\AccessControl;
    use common\models\LoginForm;
    use yii\base\DynamicModel;
    use vova07\imperavi\Widget;
    use yii\base\Action;
    use yii\base\InvalidCallException;
    use yii\base\InvalidConfigException;
    use yii\helpers\FileHelper;
    use yii\web\BadRequestHttpException;
    use yii\web\Response;
    use yii\web\UploadedFile;
    use yii\helpers\Url;
    use yii\widgets\ActiveForm;
    use kartik\widgets\FileInput;
    use common\models\Person;
    use common\models\ImageManager;
    
    
    
    
    /**
     * Site controller
     */
    class SiteController extends Controller
    {
        /**
         * @inheritdoc
         */
        public function behaviors()
        {
            return [
                'access' => [
                    'class' => AccessControl::className(),
                    'rules' => [
    
                        [
                            'actions'=> ['index'],
                            'allow' => true,
                            'roles' => ['canAdmin','admin'],
    
                        ],
                        [
                            'actions' => ['login', 'error'],
                            'allow' => true,
                        ],
                        [
                          'actions' => ['logout','save-redactor-img','save-img'],
                          'allow' => true,
                          'roles' => ['@'],
                            ],
                        ],
                  ],
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'logout' => ['post'],
                    ],
                ],
            ];
        }
    
        /**
         * @inheritdoc
         */
        public function actions()
        {
            return [
                'error' => [
                    'class' => 'yii\web\ErrorAction',
                ],
            ];
        }
    
        /**
         * Displays homepage.
         *
         * @return string
         */
        public function actionIndex()
        {
            return $this->render('index');
        }
    
        /**
         * Login action.
         *
         * @return string
         */
        public function actionLogin()
        {
            if (!Yii::$app->user->isGuest) {
                return $this->goHome();
            }
    
            $model = new LoginForm();
            if ($model->load(Yii::$app->request->post()) && $model->login()) {
                return $this->goBack();
            } else {
                return $this->render('login', [
                    'model' => $model,
                ]);
            }
        }
    
        /**
         * Logout action.
         *
         * @return string
         */
        public function actionLogout()
        {
            Yii::$app->user->logout();
    
            return $this->goHome();
        }
    
    
    
    public function actionSaveRedactorImg ($sub='main')
     {
            $this -> enableCsrfValidation = false;
            if (Yii::$app->request->isPost) {
            $dir = Yii::getAlias ('@images') .'/'.$sub.'/';
            if (!file_exists($dir)){
                FileHelper::createDirectory($dir);
            }
    
    
            $result_link = str_replace('admin.','',Url::home(true)).'uploads/images/'.$sub.'/';
            $file = UploadedFile::getInstanceByName('file');
            $model = new DynamicModel (compact ('file'));
            $model ->addRule ('file', 'image')->validate();
    
            if ($model->hasErrors()) {
    
                $result = [
                'error' => $model -> getFirstError ('file')
                ];
            } else {
                  $model->file->name = strtotime('now').'_'.Yii::$app->getSecurity()->generateRandomString(6) . '.' . $model->file->extension;
    
                if ($model->file->saveAs ($dir . $model->file->name)) {
                  $imag = Yii::$app->image->load($dir . $model->file->name);
                    $imag -> resize (800, NULL, Yii\image\drivers\Image::PRECISE)
                    ->save($dir . $model->file->name, 85); 
     
                    $result = [
                    'filelink' => $result_link . $model->file->name,'filename'=>$model->file->name];
    
            } else {
    
                $result = [
                'error' => Yii::t ('vova07/imperavi', 'ERROR_CAN_NOT_UPLOAD_FILE')
                ];
    
            }
            
        }
                 Yii::$app->response->format = Response::FORMAT_JSON;
    
                return $result;
                 } else {
                    throw new BadRequestHttpException ('Only Post is allowed');
                  }
             }
         
    
    
     public function actionSaveImg ()
         
            {
    
            $this -> enableCsrfValidation = false;
            if (Yii::$app->request->isPost) {
                $post = Yii::$app->request->post();
    
            $dir = Yii::getAlias ('@images') .'/'.$post['ImageManager']['class'].'/';
            if (!file_exists($dir)){
                FileHelper::createDirectory($dir);
            }
    
    
            $result_link = str_replace('admin.','',Url::home(true)).'uploads/images/'.$post['class'].'/';
            $file = UploadedFile::getInstanceByName('ImageManager[attachment]');
            $model = new ImageManager();
            $model->name = strtotime('now').'_'.Yii::$app->getSecurity()->generateRandomString(6) . '.' . $file->extension;
            $model ->load($post);
            $model->validate();
    
             if ($model->hasErrors()) {
    
                $result = [
                'error' => $model -> getFirstError ('file')
                ];
            } else {
               if ($file->saveAs($dir . $model->name)) {
                  $imag = Yii::$app->image->load($dir . $model->name);
                    $imag -> resize (800, NULL, Yii\image\drivers\Image::PRECISE)
                    ->save($dir . $model->name, 85); 
     
                    $result = [
                    'filelink' => $result_link . $model->name,'filename'=>$model->name];
    
            } else {
    
                $result = [
                'error' => 'ошибка'
                ];
    
            }
    
            $model->save();
        
    }
          Yii::$app->response->format = Response::FORMAT_JSON;
    
                return $result;
                 } else {
                    throw new BadRequestHttpException ('Only Post is allowed');
                  }
             }
         }
  • RBAC привязка ролей к пользователю-почему нет доступа?

    @Maila Автор вопроса
    В 'теги' admin.site.com/tag -можно зайти, но если попробовать по адресу: admin.site.com - ошибка 403 47dfbf0b27054f029d938f20bf2a1fe8.jpg8525473c59c347d29571054c4b98efb3.jpg3dd83662ad644b8da85547f105e8b1a3.jpg

    Если использовать ваш вариант с behaviors (site\yii2\backend\controllers\ТagController ) , то есть доступ admin.site.com и также есть доступ admin.site.com/tag
    В базе появились данные: 'админ' в auth_assignment, -но как проверить теперь, что только админу есть доступ? Создать нового пользователя в базе 'user'? Получается, в таком случае доступ закрыт только к одной странице admin.site.com или ко всем в backend?
  • RBAC привязка ролей к пользователю-почему нет доступа?

    @Maila Автор вопроса
    slo_nik, Здравствуйте) я смотрю здесь в видео https://www.youtube.com/watch?v=kXhzSN_InV0 и из этой статьи wiki.it-wiki.org.ua/doku.php/yii2:rbac Максим предлагает такой метод на 11:30 мин., где можно выполнять настройку ролей и permission, т.е получается, что как бы разницы нет в каком контроллере это выполнять. Он это делает в Product Controller, у меня такого нет- поэтому я взяла TagController. И цифры return для проверки у меня выводились admin.site.com/tag/role Пользователи и таблицы с миграциями создались, но на 32:43 мин. у меня ошибка возникла с id - когда пытаюсь назначить роль админа. В main.php добавлен такой менеджер:
    'authManager' => [
                'class' => 'yii\rbac\DbManager',
                'cache' => 'cache'
            ],
  • Yii2-advanced Как вывести отображение картинок во fronted?

    @Maila Автор вопроса
    модуль блога находится в vendore afdd986fa1984eb3b1eac7c8e9bf34a1.jpg
    Так же как что?

    во fronted сейчас отображаются только фото из imperavi widget, а из kartik- не отображаются, как сделать, чтобы выводились? a95d617968194a158a4306801d0edf6d.jpg
  • Почему не создаётся статья?

    @Maila Автор вопроса
    Максим Тимофеев, да, я так и сделала..хотя все ровно, хочется разобраться-как подключить Imagik в OS, не устанавливать же на XAMPP) где-то прочитала..что надо запустить php_init(); и вывести на какой-то странице. т.к. PHP CLI и PHP FPM могут иметь разный набор расширений и вообще быть разных версий. прочитала здесь на англ. www.yiiframework.com/doc-2.0/guide-structure-exten... насколько понимаю, что расширение ещё должно быть установлено правильно. я нашла его только в основном composer.json "yurkinx/yii2-image": "dev-master", а пока вот так: 77e1e8ad9e89434f8b9216da05c70c84.jpg
    И может, не в тему..а как вывести эту статью на fronted?)
  • Почему не создаётся статья?

    @Maila Автор вопроса
    Максим Федоров, а подключить его сложно к PHP7 или 5.6?
  • Почему не создаётся статья?

    @Maila Автор вопроса
    Максим Тимофеев, а что нужно конкретно в конфиге добавить? у меня он находиться в dir D:\sites\interjobs\vendor\yiisoft\yii2-imagine установлен отсюда: https://github.com/yiisoft/yii2-imagine/blob/maste... а на GD - где поменять можно? Если, к примеру, сменить на Apach 2.4.*64 , PHP 5.6*64 - то тоже самое выходит
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    Максим Тимофеев, да, теперь есть admin LTD) ну а чтобы link 'Tеги' появился слева-нужно, так понимаю, в backand/veiws/layouts/left.php прописать:
    ['label' => 'Теги', 'icon' => 'tags', 'url' => ['/tag']],
    а что ещё надо добавить?
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    Максим Тимофеев, я пробую установить стартер- php -init и миграции скачались. в настройках OpenServer домены прописаны,только почему-то: на fronted\web запускает страницы, а в backend\web - такая ошибка 52944848c70d4f9eb41477f448feb645.jpg73eccc5e77584a5397d68da663a1995d.jpg
    generate cookie validation key in backend/config/main-local.php
    PHP Warning: file_get_contents(D:/sites/interjobs/backend/config/main-local.php): failed to open stream: No such file or directory in D:\sites\interjobs\init on line 211

    Warning: file_get_contents(D:/sites/interjobs/backend/config/main-local.php): failed to open stream: No such file or directory in D:\sites\interjobs\init on line 211
    generate cookie validation key in frontend/config/main-local.php


    init.php c115e728a0ce44fa9fb8aa519399d3e7.jpg
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    Максим Тимофеев, модуль скачался через composer update, а как подключить-не совсем понятно.. базу разве не нужно создавать? и namespace где-то добавлять? в этих ссылках файлы Article.php и form.php (который с таким же названием есть в модуле)
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    Максим Тимофеев: там идёт
    BlogTag::deleteAll(['and',['blog_id'=>$this->id],['tag_id'=>$old_tags]]);


    а метод aftersafe (первый кусок кода я закомм. - этот тот метод, который Вы показывали ранее: там все работает, теги сохраняются, но новые не создаются)
    public function afterSave($insert, $changedAttributes)
        {
            parent::afterSave($insert, $changedAttributes);
        /*   $arr = \yii\helpers\ArrayHelper::map($this->tags,'id','id');
            foreach ($this->tags_array as $one){
                if(!in_array($one,$arr)){
                    $model = new BlogTag();
                    $model->blog_id = $this->id;
                    $model->tag_id = $one;
                    $model->save();
                }
                if(isset($arr[$one])){
                    unset($arr[$one]);
                }*/
    
                if (is_array($this->newtags)) {
                    $old_tags = ArrayHelper::map($this->tags,'tag','id');
                    foreach ($this ->newtags as $one_new_tag) {
                        if (isset($old_tags[$one_new_tag])) {
                            unset($old_tags[$one_new_tag]);
                          } else{
                           if($tg = $this->createNewTag($one_new_tag)){
                            Yii::$app->session->addFlash('success','добавлен тег' . $one_new_tag);
                        }else{
                            Yii::$app->session->addFlash('error','тег' . $one_new_tag . 'тег не добавился');
                           }
                        }
                    }
                    
       BlogTag::deleteAll(['and',['blog_id'=>$this->id],['tag_id'=>$old_tags]]);
        }else{
            BlogTag::deleteAll(['blog_id'=>$this->id]);
         /*  BlogTag::deleteAll(['tag_id'=>$arr]);*/
        }
    }


    стр.95 BlogControler
    if ($model->load(Yii::$app->request->post()) && $model->save()) {


    public function actionUpdate($id)
        {
            $model = $this->findModel($id);
    
            if ($model->load(Yii::$app->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->id]);
            } else {
                return $this->render('update', [
                    'model' => $model,
                ]);
            }
        }
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    В Available Debug Data там несколько записей после нажатия 'update' в посте. 617ad5501201422989eadc9a62ad3bc8.jpg

    если смотреть 1 admin.site.com/blog/blog/view?id=5
    8fa73170881f4c7280f1ad702e559646.jpg287a3afd73844b42a987ba9f5baa4c02.jpgc42d5bf8af2f4756afa5f5dda9ab1db3.jpg958a5d2af3de4cc789e170df1c44b74e.jpg824b0c54d73340b48d8b88ecf332668d.jpgc3cffc52a4c9404d8217c66641548fdc.jpg
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    а я уже пробовала так - не сохраняются 52ef697af6004e64bd43af3fe69d2be2.jpg6592f36332034402b9265dd5241a284d.jpge1cd4b86a097422087c1206f6a8e4563.jpgfdc2e2bd38764ecda8683dc3b227e673.jpg
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    Максим Тимофеев: https://www.youtube.com/watch?v=b9QHFiIl1OA&index=... 4:30 мин. Вы рассматриваете связь 'function afterFind' 5:45 - 'чтобы передать данные, нужен атрибут tag в модели Tag.php" Но в таблице tag у меня только 'id' и 'name', как и в Tag.php - я добавила поле 'tag' в таблицу, в @property integer, в 'rules' и 'attributeLabels'. Ошибка исчезла, только теги не сохраняются ни старые ни новые. 669f9d3be2d849dbbad8cd6bd93dcce6.jpg

    Blog.php

    <?php
    
    namespace medeyacom\blog\models;
    
    use common\components\behaviors\StatusBehavior;
    use Yii;
    use yii\behaviors\TimestampBehavior;
    use yii\db\ActiveRecord;
    use yii\db\Expression;
    use yii\helpers\ArrayHelper;
    use yii\helpers\Url;
    use yii\web\UploadedFile;
    use common\models\User;
    use common\models\ImageManager;
    
    /**
     * This is the model class for table "blog".
     *
     * @property integer $id
     * @property string $title
     * @property string $text
     * @property string $image
     * @property string $url
     * @property string $date_create
     * @property string $date_update
     * @property integer $status_id
     * @property integer $sort
     */
    class Blog extends ActiveRecord
    {
        const STATUS_LIST = ['off','on'];
        const IMAGES_SIZE = [
            ['50','50'],
            ['800',null],
        ];
        public $tags_array;
        public $file;
        public $newtags;
    
    
        /**
         * @inheritdoc
         */
        public static function tableName()
        {
            return 'blog';
        }
    
        public function behaviors()
        {
            return [
                'timestampBehavior'=>[
                    'class' => TimestampBehavior::className(),
                    'createdAtAttribute' => 'date_create',
                    'updatedAtAttribute' => 'date_update',
                    'value' => new Expression('NOW()'),
                ],
                'statusBehavior'=>[
                    'class' => StatusBehavior::className(),
                    'statusList' => self::STATUS_LIST,
                ]
            ];
        }
    
        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                [['title', 'url'], 'required'],
                [['text'], 'string'],
                [['url'], 'unique'],
                [['status_id', 'sort'], 'integer'],
                [['sort'], 'integer', 'max'=>99, 'min'=>1],
                [['title', 'url'], 'string', 'max' => 150],
                [['image'], 'string', 'max' => 100],
                [['file'], 'image'],
                [['newtags'], 'safe'],
               [['tags_array','date_create','date_update'], 'safe'],
               ];
            
        }
    
        /**
         * @inheritdoc
         */
        public function attributeLabels()
        {
            return [
                'id' => 'ID',
                'title' => 'Заголовок',
                'text' => 'Текст',
                'url' => 'ЧПУ',
                'status_id' => 'Статус',
                'sort' => 'Сортировка',
                'tags_array' => 'Теги',
                'image' => 'Картинка',
                'file' => 'Картинка',
                'tagsAsString' => 'Теги',
                'author.username' => 'Имя Автора',
                'author.email' => 'Почта Автора',
                'date_update' => 'Обновлено',
                'date_create' => 'Создано',
                'smallImage'=> 'Картинка',
                'newtags' => 'теги',
            ];
        }
    
    
        public function getAuthor(){
            return $this->hasOne(User::className(),['id'=>'user_id']);
        }
        public function getImages()
        {
            return $this->hasMany(ImageManager::className(), ['item_id' => 'id'])->andWhere(['class'=>self::tableName()])->orderBy('sort');
        }
        public function getImagesLinks()
        {
            return ArrayHelper::getColumn($this->images,'imageUrl');
        }
        public function getImagesLinksData()
        {
            return ArrayHelper::toArray($this->images,[
                    ImageManager::className() => [
                        'caption'=>'name',
                        'key'=>'id',
                    ]]
            );
        }
        public function getBlogTag(){
            return $this->hasMany(BlogTag::className(),['blog_id'=>'id']);
        }
    
        public function getTags()
        {
            return $this->hasMany(Tag::className(), ['id' => 'tag_id'])->via('blogTag');
        }
    
        public function getTagsAsString()
        {
            $arr = \yii\helpers\ArrayHelper::map($this->tags,'id','name');
            return implode(', ',$arr);
        }
    
        public function getSmallImage()
        {
            if($this->image){
                $path = str_replace('admin.','',Url::home(true)).'uploads/images/blog/50x50/'.$this->image;
            }else{
                $path = str_replace('admin.','',Url::home(true)).'uploads/images/ss.jpg';
            }
            return $path;
        }
    
    
      public function beforeDelete()
          
            {   
            	if (parent::beforeDelete()) {
                    $dir = Yii::getAlias('@images').'/blog/';
                /* if($this->image != '')*/
              /* if(!empty($this->image))*/
               if(file_exists($dir.$this->image)){
                        unlink($dir.$this->image);
                    }
               /* if($this->image && file_exists($dir.$this->image))
            if (isset($this->image) && file_exists($idr.$this->image)){
                  unlink($dir.$this->image);}*/
                    
            /* if(file_exists($dir.$this->image)){
                        unlink($dir.$this->image);*/
                      foreach (self::IMAGES_SIZE as $size){
                        $size_dir = $size[0].'x';
                if($size[1] !== null)
                            $size_dir .= $size[1];
                if(file_exists($dir.$this->image)){
                            unlink($dir.$size_dir.'/'.$this->image);
                        }
                    } 
            
               BlogTag::deleteAll(['blog_id'=>$this->id]);
               return true;
                     } else {
                return false;
                  }
            }
        
    
    
    public function afterFind()
    {
    
    /*  parent::afterFind();
            $this->tags_array = $this->tags;*/
         
    $this->newtags = \yii\helpers\ArrayHelper::map($this->tags, 'name','name');
    }
    
      public function afterSave($insert, $changedAttributes)
        {
           /* parent::afterSave($insert, $changedAttributes);
           $arr = \yii\helpers\ArrayHelper::map($this->tags,'id','id');
            foreach ($this->tags_array as $one){
                if(!in_array($one,$arr)){
                    $model = new BlogTag();
                    $model->blog_id = $this->id;
                    $model->tag_id = $one;
                    $model->save();
                }
                if(isset($arr[$one])){
                    unset($arr[$one]);
                }*/
    
                if (is_array($this->newtags)) {
                    $old_tags = ArrayHelper::map($this->tags,'tag','id');
                    foreach ($this ->newtags as $one_new_tag) {
                        if (isset($old_tags[$one_new_tag])) {
                            unset($old_tags[$one_new_tag]);
                        
                        } else{
                           if($tg = $this->createNewTag($one_new_tag)){
                            Yii::$app->session->addFlash('success','добавлен тег' . $one_new_tag);
                        }else{
                            Yii::$app->session->addFlash('error','тег' . $one_new_tag . 'тег не добавился');
                           }
                        }
                    }
                    
            BlogTag::deleteAll(['and',['blog_id'=>$this->id],['tag_id'=>$old_tags]]);
        }else{
            BlogTag::deleteAll(['blog_id'=>$this->id]);
         /*  BlogTag::deleteAll(['tag_id'=>$arr]);*/
        }
    }
    
    
        private function createNewTag ($new_tag) {
        	
            if(!$tag = Tag::find()->andWhere(['tag'=>$new_tag])->one()){
                $tag = new Tag();
                $tag ->tag = $new_tag;
                if(!$tag->save()) {
                    $tag =null;
                }
            }
            if ($tag instanceof Tag) {
                $blog_tag = new BlogTag();
                $blog_tag->blog_id = $this->id;
                $blog_tag->tag_id = $tag->id;
                if($blog_tag->save())
                    return $blog_tag->id;
            }
            return false;
        }
    
    
    
    
        public function beforeSave($insert)
        {
            if($file = UploadedFile::getInstance($this, 'file')){
                $dir = Yii::getAlias('@images').'/blog/';
                if(file_exists($dir.$this->image)){
                    unlink($dir.$this->image);
                }
                if(file_exists($dir.'50x50/'.$this->image)){
                    unlink($dir.'50x50/'.$this->image);
                }
                if(file_exists($dir.'800x/'.$this->image)){
                    unlink($dir.'800x/'.$this->image);
                }
                $this->image = strtotime('now').'_'.Yii::$app->getSecurity()->generateRandomString(6)  . '.' . $file->extension;
                $file->saveAs($dir.$this->image);
                $imag = Yii::$app->image->load($dir.$this->image);
                $imag->background('#fff',0);
                $imag->resize('50','50', Yii\image\drivers\Image::INVERSE);
                $imag->crop('50','50');
                $imag->save($dir.'50x50/'.$this->image, 90);
                $imag = Yii::$app->image->load($dir.$this->image);
                $imag->background('#fff',0);
                $imag->resize('800',null, Yii\image\drivers\Image::INVERSE);
                $imag->save($dir.'800x/'.$this->image, 90);
            }
            return parent::beforeSave($insert);
        }
    
    
     }


    b5b36893cede45eea7547dce121616ae.jpg
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    Максим Тимофеев: спасибо, ваше видео я смотрела и не раз уже, как и предыдущее. если бы там было все понятно, то наверное, здесь не спросила бы. значит буду искать ответ в другом месте.
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    Максим Тимофеев: я пытаюсь сделать так, как вы делали в этом видео Yii2: Сохранение связанных данных. Видео 9.2 - в блоге В. Воловика, https://www.youtube.com/watch?v=b9QHFiIl1OA чтобы можно было создавать и сохранять новые теги в посте редактирования, а не в базе. Но не совсем понятно ещё про $old_tag - её ведь тоже надо где-то объявлять? И нужно ли иметь такую колонку в БД, если используется ActiveRecord ? У вас в видео этого нет. К ООП, я конечно, буду возвращаться- роликов Razzvana и пару книг мне не достаточно)
  • Как создавать и сохранять новые теги?

    @Maila Автор вопроса
    т.е. нужно добавить где-то этот атрибут tag?
  • Перенос блога модуля в yii2- как решить ошибку?

    @Maila Автор вопроса
    Михаил Серенков: в папке подключённого блога, который находиться в vendor, конечно есть composer. Модуль установился с githube. Но вот с тегами-большая проблема..
  • Почему не удаляются посты с картинками в блоге?

    @Maila Автор вопроса
    Максим Тимофеев: добавила actionDelete и actionDeleteImage в BlogController (fronted) - но все ровно что-то не так..
    <?php
    
    namespace frontend\controllers;
    
    
    use medeyacom\blog\models\Blog;
    use common\models\ImageManager;
    use Yii;
    use yii\data\ActiveDataProvider;
    use yii\web\Controller;
    use yii\web\NotFoundHttpException;
    use medeyacom\blog\models\BlogSearch;
    
    
    
    /**
     * Blog controller
     */
    class BlogController extends Controller
    {
        /**
         * Displays homepage.
         *
         * @return mixed
         */
        public function actionIndex()
        {
            #$blogs = Blog::find()->where(['status_id'=>1])->orderBy(['id' => SORT_DESC])->all();
    
           $blogs = Blog::find()->with('author')->andWhere(['status_id'=>1])->orderBy('sort');
            $dataProvider = new ActiveDataProvider([
                'query' => $blogs,
                'pagination' => [
                'pageSize' => 10,
                ],
            ]);
            #$blogs = Blog::find()->where(['status_id'=>1])->orderBy(['id' => SORT_ASC])->all();
            return $this->render('all',['dataProvider'=>$dataProvider]);
        }
    
           public function actionOne($url)
        {  
           if($blog = Blog::find()->andWhere(['url'=>$url])->one()) {
                return $this->render('one',['blog'=>$blog]);
          }
           throw new NotFoundHttpException('ой,нет такого блога');
        }
    
        public function actionDelete($id)
        {
            $this->findModel($id)->delete();
    
            return $this->redirect(['index']);
        }
    
    
     public function actionDeleteImage()
        {
            if(($model = ImageManager::findOne(Yii::$app->request->post('key'))) and $model->delete()){
                return true;
            } else {
                throw new NotFoundHttpException('The requested page does not exist.');
            }
        }
    }