Задать вопрос
  • Как правильно установить загрузчик фото?

    @Maila Автор вопроса
    Arik, ну так мне и нужно настроить, чтобы в backand в статьях появилась возможность загружать картинки. Сейчас выглядит так:
    public function behaviors()
        {
            return [
                'status' => [
                  'class' => StatusBehavior::className(),
                  'status_value' => $this->status_id,
                   'statusList' => Yii::$app->modules['article']->status_list,
                    'attribute' => 'file'
                ],
                'image' => [
                    'class' => ImageUploadBehavior::className(),
                    'attribute' => 'image', 
                    'random_name' => 'true',
                    'image_path' => Yii::$app->modules['article']->imagePath,
                    'image_url' => Yii::$app->modules['article']->imageUrl,
                    'size_for_resize' => [
                                    [640,480,true],
                                    [640,null,false],
                                    [50,50,true]
                                    ]
                ],
                'timestamp' => [
                    'class' => TimestampBehavior::className(),
                    'createdAtAttribute' => 'date_create',
                    'updatedAtAttribute' => false,
                ],
                'seo' => [
                    'class' => \wokster\seomodule\SeoBehavior::className(),
                ],


    Но появилась ошибка: Class 'vova07\imperavi\actions\GetAction' not found
    5a2d6c8393f66848871445.jpeg
    ArticleController
    spoiler
    <?php
    
    namespace wokster\article\models;
    
    use wokster\behaviors\ImageUploadBehavior;
    use wokster\behaviors\StatusBehavior;
    use wokster\tags\TagsBehavior;
    use Yii;
    use yii\behaviors\TimestampBehavior;
    use yii\helpers\StringHelper;
    use yii\helpers\Url;
    
    
    /**
     * This is the model class for table "article".
     *
     * @property integer $id
     * @property string $title
     * @property string $url
     * @property string $text
     * @property integer $status_id
     * @property string $image
     * @property integer $date_create
     * @property integer $type_id
     * @property integer $date_start
     * @property integer $date_finish
    
     */
    class Article extends \yii\db\ActiveRecord
    {
        public $file;
    
        /**
         * @inheritdoc
         */
        public static function tableName()
        {
            return 'article';
        }
    
        /**
        * @inheritdoc
        */
        public function behaviors()
        {
            return [
                'status' => [
                  'class' => StatusBehavior::className(),
                  'status_value' => $this->status_id,
                   'statusList' => Yii::$app->modules['article']->status_list,
                       'attribute' => 'file'
                ],
                'image' => [
                    'class' => ImageUploadBehavior::className(),
                    'attribute' => 'image', 
                    'random_name' => 'true',
                    'image_path' => Yii::$app->modules['article']->imagePath,
                    'image_url' => Yii::$app->modules['article']->imageUrl,
                    'size_for_resize' => [
                                    [640,480,true],
                                    [640,null,false],
                                    [50,50,true]
                                    ]
                ],
                'timestamp' => [
                    'class' => TimestampBehavior::className(),
                    'createdAtAttribute' => 'date_create',
                    'updatedAtAttribute' => false,
                ],
                'seo' => [
                    'class' => \wokster\seomodule\SeoBehavior::className(),
                ],
                'tags' => [
                    'class' => TagsBehavior::className(),
                ],
            ];
        }
    
        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                [['title', 'url'], 'required'],
                [['date_start', 'date_finish'], 'required', 'when' => function($model) {
                    return $model->type_id == \wokster\article\Article::TYPE_SALE;
                }],
                [['text'], 'string'],
                [['status_id', 'date_create', 'type_id', 'date_start', 'date_finish'], 'integer'],
                [['title', 'image'], 'string', 'max' => 255],
                [['url'], 'string', 'max' => 100],
                [['url'], 'unique'],
               
    
                [['url'], 'match', 'pattern' => '/^[a-z0-9_-]+$/', 'message' => 'Недопустимые символы в url'],
                [['status_id'], 'default','value'=>0],
                ['file','image']
            ];
        }
    
        /**
         * @inheritdoc
         */
        public function attributeLabels()
        {
            return [
                'id' => 'ID',
                'title' => 'заглавие',
                'url' => 'ЧПУ',
                'text' => 'контент',
                'status_id' => 'статус',
                'image' => 'картинка',
                'date_create' => 'дата публикации',
                'type_id' => 'тип',
                'Status' => 'статус',
          
                'date_start' => 'дата начала',
                'date_finish' => 'дата окончания'
            ];
        }
    
        /**
         * @return mixed
         */
        public static function getTypeList(){
            return Yii::$app->modules['article']->type_list;
        }
    
        /**
         * @return string
         */
        public function getTypeName(){
            $list = self::getTypeList();
            return (isset($list[$this->type_id]))?$list[$this->type_id]:'';
        }
    
        /**
         * @return string
         */
        public function getShortText(){
            return StringHelper::truncateWords(strip_tags($this->text),50);
        }
    }
  • Как правильно установить загрузчик фото?

    @Maila Автор вопроса
    Arik, таким образом? 'attribute' => 'image', 'file'
    а behaviors как подключить?
    у меня там есть 'class' => StatusBehavior::className(), и 'class' => ImageUploadBehavior::className(),

    куда вставить этот код из документации?
    'class' => '\yiidreamteam\upload\FileUploadBehavior',
                'attribute' => 'fileUpload',
                'filePath' => '@webroot/uploads/[[pk]].[[extension]]',
                'fileUrl' => '/uploads/[[pk]].[[extension]]',
  • Как правильно установить загрузчик фото?

    @Maila Автор вопроса
    не совсем понятно " юзаете file'
    у меня в модели сейчас
    public function behaviors()
        {
            return [
                'status' => [
                  'class' => StatusBehavior::className(),
                  'status_value' => $this->status_id,
                   'statusList' => Yii::$app->modules['article']->status_list,
                ],
                'image' => [
                    'class' => ImageUploadBehavior::className(),
                    'attribute' => 'image',
                    'random_name' => 'true',
                    'image_path' => Yii::$app->modules['article']->imagePath,
                    'image_url' => Yii::$app->modules['article']->imageUrl,
                    'size_for_resize' => [
                                    [640,480,true],
                                    [640,null,false],
                                    [50,50,true]
                                    ]
                ],
                'timestamp' => [
                    'class' => TimestampBehavior::className(),
                    'createdAtAttribute' => 'date_create',
                    'updatedAtAttribute' => false,
                ],
                'seo' => [
                    'class' => \wokster\seomodule\SeoBehavior::className(),
                ],
                'tags' => [
                    'class' => TagsBehavior::className(),
                ],
            ];
        }

    Куда именно нужно подключить 'attribute' => 'image',
    В image там уже есть
    'class' => ImageUploadBehavior::className(),
                    'attribute' => 'image',
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal, я использую yii2starter https://github.com/wokster/yii2-starter в нём подключен "creocoder/yii2-nested-sets": "^0.9.0", и CostaRico/yii2-images т.к. тот, который для arcticles -он не работает у меня.
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal, Из документации:
    Yii2-images is yii2 module that allows to attach images to any of your models, next you can get images in any sizes, also you can set main image of images set.
    т.е этот модуль не занимается загрузкой изображений- он делает привязку любой модели к уже загруженным изображениям с последующим выводом нужных размеров, и возможностью установки основного изображения. Попробую установить mohorev/yii2-upload-behavior надеюсь, он может загружать фото для статей?)
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal, это заменено и если убрать эту часть из кода, то появляется ошибка: 'Invalid configuration" Скрины в предыдущем сообщении.
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal, свойства attribure нет в ImageBehave.php https://github.com/CostaRico/yii2-images/blob/mast... Этот класс был настроен под другой модуль, а я согласно рекомендациям по установке добавила только поведение в модель
    'class' => 'rico\yii2images\behaviors\ImageBehave',

    Но если эту часть убрать из кода :
    'attribute' => 'image',
                    'random_name' => 'true',
                    'image_path' => Yii::$app->modules['article']->imagePath,
                    'image_url' => Yii::$app->modules['article']->imageUrl,
                    'size_for_resize' => [
                                    [640,480,true],
                                    [640,null,false],
                                    [50,50,true]
                                    ]

    то выходит такая ошибка: 5a1ff80f11b51920255591.jpeg5a1ff8256b315510869354.jpeg5a1ff84133517335620465.jpeg5a1ff865c67ef274727708.jpeg
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal, а как проверить это? В файле ImageBehave.php?
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal, form.php
    <?php
    
    use yii\helpers\Html;
    use kartik\form\ActiveForm;
    use \dosamigos\fileinput\FileInput;
    use yii\helpers\Url;
    
    /* @var $this yii\web\View */
    /* @var $model wokster\article\models\Article */
    /* @var $form yii\widgets\ActiveForm */
    /* @var $model app\modules\admin\models\Gallery */
    
    if($model->hasErrors()):
      \wokster\ltewidgets\BoxWidget::begin([
          'solid'=>true,
          'color'=>'danger',
          'title'=>'Ошибки валидации',
          'close'=> true,
      ]);
      $error_data = $model->firstErrors;
      echo \yii\widgets\DetailView::widget([
          'model'=>$error_data,
          'attributes'=>array_keys($error_data)
      ]);
      \wokster\ltewidgets\BoxWidget::end();
    endif;
    ?>
    
    <div class="-article-form">
    
        <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
    
        <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
    
        <?= $form->field($model, 'image')->fileInput() ?>
    
        <div class="form-group">
            <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
        </div>
    
        <?php ActiveForm::end(); ?>
    
    </div>
    
    
    <div class="article-form">
        <?php $form = ActiveForm::begin([
          'options' => ['enctype'=>'multipart/form-data'],
          'enableClientValidation' => false
        ]); ?>
    
              <?= $form->field($model, 'title', ['addon' => ['prepend' => ['content' => '<i class="fa fa-pencil"></i>']],'options'=>['class'=>'col-xs-12 col-md-6']])->textInput(['maxlength' => true]) ?>
    
    	        <?=  $form->field($model, 'url', ['addon' => ['prepend' => ['content' => '<i class="fa fa-globe"></i>']],'options'=>['class'=>'col-xs-12 col-md-6']])->widget(\wokster\behaviors\TranslitWidget::className())
     ?>
    
    	        <?=  $form->field($model, 'text',['options'=>['class'=>'col-xs-12']])->widget(\vova07\imperavi\Widget::className(),[
                  'settings' => [
                      'lang' => 'ru',
                      'minHeight' => 200,
                      'pastePlainText' => true,
                      'imageUpload' => \yii\helpers\Url::toRoute(['/article/article/image-upload']),
                      'imageManagerJson' => \yii\helpers\Url::toRoute(['/article/article/images-get']),
                       /*'imageUpload' => \yii\helpers\Url::to (['/site/save-redactor-img']),*/
                      'replaceDivs' => false,
                      'formattingAdd' => [
                          [
                              'tag' => 'p',
                              'title' => 'text-success',
                              'class' => 'text-success'
                          ],
                          [
                              'tag' => 'p',
                              'title' => 'text-danger',
                              'class' => 'text-danger'
                          ],
                      ],
                      'plugins' => [
                          'fullscreen',
                          'table',
                          'imagemanager',
                          'fontcolor',
                          'fontsize',
                          'video'
                      ]
                  ]
              ])
    
     ?>
    
    
    
      <div class="row">
      <div class="col-xs-8">
        <?=  $form->field($model, 'status_id',['options'=>['class'=>'col-xs-12']])->dropDownList(Yii::$app->modules['article']->status_list)
        ?>
    
        <?= $form->field($model, 'type_id', ['addon' => ['prepend' => ['content' => '<i class="fa fa-pencil"></i>']],'options'=>['class'=>'col-xs-12']])->dropDownList(Yii::$app->modules['article']->type_list) ?>
    
        <div class="<?= ($model->type_id == \wokster\article\Article::TYPE_PAGE)?' hidden':''?>" id="start-date-div">
          <?= $form->field($model, 'date_start', ['options'=>['class'=>'col-xs-12']])->widget(\kartik\datecontrol\DateControl::className(),[]) ?>
        </div>
    
        <div class="<?= ($model->type_id == \wokster\article\Article::TYPE_SALE)?'':' hidden'?>" id="sale-date-div">
          <?= $form->field($model, 'date_finish', ['options'=>['class'=>'col-xs-12']])->widget(\kartik\datecontrol\DateControl::className(),[]) ?>
        </div>
    
        <?= $form->field($model, 'new_tags', ['addon' => ['prepend' => ['content' => '<i class="fa fa-pencil"></i>']],'options'=>['class'=>'col-xs-12']])->widget(\wokster\tags\TagsInputWidget::className()) ?>
      </div>
      <div class="col-xs-4">
        <?= $form->field($model, 'file', ['options'=>['class'=>'col-xs-12']])->label(false)->widget(FileInput::className(),[
            'attribute' => 'image', // image is the attribute
          // using STYLE_IMAGE allows me to display an image. Cool to display previously
          // uploaded images
            'thumbnail' => '<img src="'.$model->getImage().'" />',
            'style' => FileInput::STYLE_IMAGE
        ]);?>
      </div>
    
      <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
    <?=$form->field($model, 'image')->fileInput() ?>
      </div>
      <?= \wokster\seomodule\SeoFormWidget::widget(['model'=>$model,'form'=>$form]);?>
      <div class="row">
        <div class="col-xs-12 col-md-12">
          <div class="form-group">
            <?= Html::submitButton('Сохранить', ['class' =>'btn btn-success']) ?>
          </div>
        </div>
      </div>
      <?php ActiveForm::end(); ?>
    </div>
    <?php $this->registerJs("
      $('#article-type_id').on('change',function(){
      var type = $(this).val();
        if(type == ".\wokster\article\Article::TYPE_SALE."){
          $('#sale-date-div').removeClass('hidden');
          $('#start-date-div').removeClass('hidden');
        }else if(type == ".\wokster\article\Article::TYPE_NEWS."){
          $('#sale-date-div').addClass('hidden');
          $('#start-date-div').removeClass('hidden');
        }else{
          $('#sale-date-div').addClass('hidden');
          $('#start-date-div').addClass('hidden');
        }
      });
    ");
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal,
    ArcticleController

    <?php

    namespace wokster\article\controllers;

    use yii;
    use wokster\article\models\Article;
    use wokster\article\models\ArticleSearch;
    use yii\web\MethodNotAllowedHttpException;
    use yii\web\NotFoundHttpException;
    use yii\filters\VerbFilter;

    /**
    * ArticleController implements the CRUD actions for Article model.
    */
    class ArticleController extends yii\web\Controller
    {
    public function behaviors()
    {
    return [
    'verbs' => [
    'class' => VerbFilter::className(),
    'actions' => [
    'delete' => ['post'],
    ],
    ],
    ];
    }

    public function actions()
    {
    return [
    'images-get' => [
    'class' => 'vova07\imperavi\actions\GetAction',
    'url' => \Yii::$app->controller->module->allRedactorImageUrl, // Directory URL address, where files are stored.
    'path' => \Yii::$app->controller->module->redactor_upload_path_alias, // Or absolute path to directory where files are stored.
    'type' => \vova07\imperavi\actions\GetAction::TYPE_IMAGES,
    ],
    'image-upload' => [
    'class' => 'vova07\imperavi\actions\UploadAction',
    'url' => \Yii::$app->controller->module->redactorImageUrl, // Directory URL address, where files are stored.
    'path' => \Yii::$app->controller->module->redactorPath, // Or absolute path to directory where files are stored.
    ],
    ];
    }

    /**
    * Lists all Article models.
    * return mixed
    */
    public function actionIndex()
    {
    $searchModel = new ArticleSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
    'searchModel' => $searchModel,
    'dataProvider' => $dataProvider,
    ]);
    }

    /**
    * Displays a single Article model.
    * @param integer $id
    * return mixed
    */
    public function actionView($id)
    {
    return $this->render('view', [
    'model' => $this->findModel($id),
    ]);
    }

    /**
    * Creates a new Article model.
    * If creation is successful, the browser will be redirected to the 'view' page.
    * return mixed
    */
    public function actionCreate($type=null)
    {
    $model = new Article();
    if(is_numeric($type))
    $model->type_id = $type;

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
    if(Yii::$app->request->post('toview',false)){
    return $this->redirect(['view', 'id' => $model->id]);
    }else{
    return $this->redirect(['update', 'id' => $model->id]);
    }

    } else {
    return $this->render('create', [
    'model' => $model,
    ]);
    }
    }

    /**
    * Updates an existing Article model.
    * If update is successful, the browser will be redirected to the 'view' page.
    * @param integer $id
    * return mixed
    */
    public function actionUpdate($id)
    {
    $model = $this->findModel($id);

    /* if ($model->load(Yii::$app->request->post()) && $model->save()) {
    return $this->redirect(['update', 'id' => $model->id]);
    } else {
    return $this->render('update', [
    'model' => $model,
    ]);
    }*/

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
    $model->image = UploadedFile::getInstance($model, 'image');
    if ($model->image){
    $model->upload();
    }

    return $this->redirect(['view', 'id' => $model->id]);
    }
    }

    /**
    * Deletes an existing Article model.
    * If deletion is successful, the browser will be redirected to the 'index' page.
    * @param integer $id
    * return mixed
    */
    public function actionDelete($id)
    {
    $this->findModel($id)->delete();

    return $this->redirect(['index']);
    }

    /**
    * Finds the Article model based on its primary key value.
    * If the model is not found, a 404 HTTP exception will be thrown.
    * @param integer $id
    * return Article the loaded model
    * @throws NotFoundHttpException if the model cannot be found
    */
    protected function findModel($id)
    {
    if (($model = Article::findOne($id)) !== null) {
    return $model;
    } else {
    throw new NotFoundHttpException('The requested page does not exist.');
    }
    }
    }
  • Почему не происходит загрузка картинки в поле статьи?

    @Maila Автор вопроса
    Decadal, Setup module common/config/main
    main.php
    <?php
    use \kartik\datecontrol\Module;
    return [
        'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
        'modules'=>[
    
     'yii2images' => [
                'class' => 'rico\yii2images\Module',
                //be sure, that permissions ok
                //if you cant avoid permission errors you have to create "images" folder in web root manually and set 777 permissions
                'imagesStorePath' => 'images/store', //path to origin images
                'imagesCachePath' => 'images/cache', //path to resized copies
                'graphicsLibrary' => 'GD', //but really its better to use 'Imagick'
                'placeHolderPath' => '@webroot/images/placeHolder.png', // if you want to get placeholder when image not exists, string will be processed by Yii::getAlias
           ],
    
            'datecontrol' =>  [
                'class' => 'kartik\datecontrol\Module',
    
              // format settings for displaying each date attribute (ICU format example)
                'displaySettings' => [
                    Module::FORMAT_DATE => 'yyyy-M-dd',
                    Module::FORMAT_TIME => 'php: H:i',
                    Module::FORMAT_DATETIME => 'php:d M Y H:i',
                ],
    
              // format settings for saving each date attribute (PHP format example)
                'saveSettings' => [
                    Module::FORMAT_DATE => 'php:U',
                    Module::FORMAT_TIME => 'php:U',
                    Module::FORMAT_DATETIME => 'php:U',
                ],
    
              // set your display timezone
                'displayTimezone' => 'europe/moscow',
    
              // set your timezone for date saved to db
                'saveTimezone' => 'UTC',
    
              // automatically use kartik\widgets for each of the above formats
                'autoWidget' => true,
            ] 
        ], 
    
        'components' => [
            'cache' => [
                'class' => 'yii\caching\FileCache',
            ],
            'settings' => [
                'class' => 'wokster\settings\components\Settings',
            ],
            'image' => [
                'class' => 'yii\image\ImageDriver',
                'driver' => 'GD',  //GD or Imagick
            ],
            'i18n' => [
                'translations' => [
                    'file-input' => [
                        'class' => 'yii\i18n\PhpMessageSource',
                        'basePath' => 'dosamigos\fileinput\src\messages',
                    ],
                ],
            ],
        ],
    ];

    Arcticle.php
    <?php

    namespace wokster\article\models;

    use wokster\behaviors\ImageUploadBehavior;
    use wokster\behaviors\StatusBehavior;
    use wokster\tags\TagsBehavior;
    use Yii;
    use yii\behaviors\TimestampBehavior;
    use yii\helpers\StringHelper;
    use yii\helpers\Url;

    /**
    * This is the model class for table "article".
    *
    * @property integer $id
    * @property string $title
    * @property string $url
    * @property string $text
    * @property integer $status_id
    * @property string $image
    * @property integer $date_create
    * @property integer $type_id
    * @property integer $date_start
    * @property integer $date_finish

    */
    class Article extends \yii\db\ActiveRecord
    {
    public $file;
    public $image;

    /**
    * @inheritdoc
    */
    public static function tableName()
    {
    return 'article';
    }

    /**
    * @inheritdoc
    */
    public function behaviors()
    {
    return [
    'status' => [
    'class' => StatusBehavior::className(),
    'status_value' => $this->status_id,
    'statusList' => Yii::$app->modules['article']->status_list,
    ],


    'image' => [
    /* 'class' => ImageUploadBehavior::className(),*/
    'class' => 'rico\yii2images\behaviors\ImageBehave',
    'attribute' => 'image',
    'random_name' => 'true',
    'image_path' => Yii::$app->modules['article']->imagePath,
    'image_url' => Yii::$app->modules['article']->imageUrl,
    'size_for_resize' => [
    [640,480,true],
    [640,null,false],
    [50,50,true]
    ]
    ],
    'timestamp' => [
    'class' => TimestampBehavior::className(),
    'createdAtAttribute' => 'date_create',
    'updatedAtAttribute' => false,
    ],
    'seo' => [
    'class' => \wokster\seomodule\SeoBehavior::className(),
    ],
    'tags' => [
    'class' => TagsBehavior::className(),
    ],
    ];
    }

    /**
    * @inheritdoc
    */
    public function rules()
    {
    return [
    [['title', 'url'], 'required'],
    [['date_start', 'date_finish'], 'required', 'when' => function($model) {
    return $model->type_id == \wokster\article\Article::TYPE_SALE;
    }],
    [['text'], 'string'],
    [['status_id', 'date_create', 'type_id', 'date_start', 'date_finish'], 'integer'],
    [['title', 'image'], 'string', 'max' => 255],
    [['url'], 'string', 'max' => 100],
    [['url'], 'unique'],


    [['url'], 'match', 'pattern' => '/^[a-z0-9_-]+$/', 'message' => 'Недопустимые символы в url'],
    [['status_id'], 'default','value'=>0],
    ['file'],
    [['image'], 'file', 'extensions' => 'jpg'],
    ];
    }

    public function upload(){
    if($this->validate()){
    $path = 'images/store' . $this->image->baseName . '.' . $this->image->extension;
    $this->image->saveAs($path);
    return true;
    } else {
    return false;
    }
    }

    /**
    * @inheritdoc
    */
    public function attributeLabels()
    {
    return [
    'id' => 'ID',
    'title' => 'заглавие',
    'url' => 'ЧПУ',
    'text' => 'контент',
    'status_id' => 'статус',
    'image' => 'картинка',
    'date_create' => 'дата публикации',
    'type_id' => 'тип',
    'Status' => 'статус',

    'date_start' => 'дата начала',
    'date_finish' => 'дата окончания'
    ];
    }

    /**
    * return mixed
    */
    public static function getTypeList(){
    return Yii::$app->modules['article']->type_list;
    }

    /**
    * return string
    */
    public function getTypeName(){
    $list = self::getTypeList();
    return (isset($list[$this->type_id]))?$list[$this->type_id]:'';
    }

    /**
    * return string
    */
    public function getShortText(){
    return StringHelper::truncateWords(strip_tags($this->text),50);
    }
    }
  • Почему не загружается картинка?

    @Maila Автор вопроса
    Лентяй, request: GET POST FILES - Empty
  • Yii2-advanced Как подключить одновременное отображение галереи в backend и fronted?

    @Maila Автор вопроса
    slo_nik, а как исправить это? не очень понимаю..(
  • Yii2-advanced Как подключить одновременное отображение галереи в backend и fronted?

    @Maila Автор вопроса
    slo_nik, если просто добавить эту строчку, то ничего не меняется. Если добавить VarDumper:: dump($model); к коду, то появляется слово 'null' на странице вместе с текстом (iiio) и названием статьи (Art)
    5a072baf6376f447905058.jpeg
    <?php
      
    
        /* @var $this yii\web\View */
       /* @var $blog medeyacom\Blog */
       /* @throws NotFoundHttpException if the model cannot be found
      */
    use yii\helpers\Html;
    use yii\widgets\Breadcrumbs;
    use metalguardian\fotorama;
    use yii\web\MethodNotAllowedHttpException;
    use yii\web\NotFoundHttpException;
    use yii\helpers\VarDumper;
    
    $this->title = $blog->title;
      /*$desc = \yii\helpers\StringHelper::truncateWords(strip_tags($blog->body),20, '');*/
      $this->registerMetaTag(['property'=>'og:title','content'=>$this->title]);
    
     $this->registerMetaTag(['name'=>'description','content'=>$desc]);
      $this->registerMetaTag(['property'=>'og:description','content'=>$desc]);
      $this->registerMetaTag(['property'=>'og:site_name','content'=>$this->title]);
    
    
    $this->params['breadcrumbs'] = [
    	['label'=>'публикации','url'=>['blog/index']],
    	['label'=>$blog->title]
    ];
    
    ?>
    
    <h1><?=$blog->title?></h1>
    <?=$blog->text?>
    
    
    <div class="blog-view">
    
     <?php 
        $fotorama = \metalguardian\fotorama\Fotorama::begin(
            [
                'options' => [
                    'loop' => true,
                    'hash' => true,
                    'ratio' => 800/600,
                ],
                'spinner' => [
                    'lines' => 20,
                ],
                'tagName' => 'span',
                'useHtmlData' => false,
                'htmlOptions' => [
                    'class' => 'custom-class',
                    'id' => 'custom-id',
                ],
            ]
        ); 
       VarDumper:: dump($model);
       print_r($model); 
       exit();
    
        foreach ($model->images as $one) {
         echo Html::img($one->imageUrl,['alt'=>$one->alt]);
           } 
           $fotorama->end(); ?>
    
        
    </div>
  • Yii2-advanced Как подключить одновременное отображение галереи в backend и fronted?

    @Maila Автор вопроса
    slo_nik, если перед циклом добавить exit(); то открывается страница с названием статьи и текст без фото и больше ничего там.5a07226f66599143542050.jpeg

    Может быть, есть какая-то логика с поэтапной настройкой этого плагина? C учетом того, что у меня проект поделён так, где папка publish_html с uploads вынесена отдельно?
    Сам этот код я скопировала из blog/view в vendor и вставила во view во fronted.
    5a0724aa37ac7826821894.jpeg
    Читаю документацию на github https://github.com/MetalGuardian/yii2-fotorama-widget и здесь https://lan143.ru/blog/records/25-ispolzovanie-pla... - но там ничего подобного нет.
  • Yii2-advanced Как подключить одновременное отображение галереи в backend и fronted?

    @Maila Автор вопроса
    slo_nik, если сделать print_r($model) 5a06f764018cb177012289.jpeg
    или добавить use yii\helpers\VarDumper;
    и строчку: VarDumper:: dump($model); - ту же самую ошибку выдаёт.
  • Yii2-advanced Как подключить одновременное отображение галереи в backend и fronted?

    @Maila Автор вопроса
    slo_nik, а как проверить это? я не знаю пока, как исправить 'Invalid argument supplied for foreach()'
    Эта ошибка возникает, когда модели не создаются, картинки не сохраняются в папку, или пути записываются в базу. У меня есть в MySQl таблица image_manager. Может, в контролёре нужно что-то изменить?

    Если просто добавить такую запись и чуть изменить код
    echo Html::img($one->imageUrl,['alt'=>$one->alt]);
           }


    то все ровно, ничего не меняется, та же ошибка.
    Или ещё в bootstrap неверный путь загрузки картинок? 5a05b115a5525377037889.jpeg5a05be4a7c6e8615572992.jpeg
  • Yii2-advanced Как подключить одновременное отображение галереи в backend и fronted?

    @Maila Автор вопроса
    slo_nik, Здравствуйте, эта ошибка исправлена, но есть другая.
  • Как правильно развернуть проект на хостинге?

    @Maila Автор вопроса
    Yii не может найти файл в папке vendor, там хранятся зависимости.

    Да, действительно, в vendor\yiisoft\yii2\db\mysql почему-то не было файлов Schema и QueryBuilder. На сайте руководства вопросов есть инфа, что:' Мы не поддерживаем базу данных information_schema. Все запросы к ней запрещены, так как это вызывает высокую нагрузку процессора.' В FireZilla не было сообщений, что какой-то файл не передался. Вообщем, эти 2 файла добавились на сервер, страница открылась.

    И composer здесь ни при чем, как и команда composer install --no-scripts

    Во-вторых, папка vendor не заливается на сервер (и вообще должна игнорироваться в VCS).

    а где, по-вашему, папка vendor должна находиться?

    Третье – используйте систему контроля версий (git), файлы по FTP заливать – моветон.

    Моветон не моветон, но на моём хостинге через git можно заливать только в платном аккаунте-мне для тестинга сейчас это не нужно вообще.

    Судя по вопросу, в разработке Вы новичок, изучите устройство и варианты использования систем контроля версий, системы миграций БД.

    С git и миграциями знакома вполне, но вопрос не об этом был.
  • Как правильно развернуть проект на хостинге?

    @Maila Автор вопроса
    А при чем здесь composer? И какие зависимости? Ведь файлы закачались на сервер через FireZilla, а база данных скопирована из phpmyadmin на Open server и добавлена в phpmyadmin на хостинге.