Не могу вывести галерею. Использую yii2-gallery-manager

353
14 января 2017, 14:45

Использую yii2, yii2-gallery-manager

Создал контроллер

class GalleryImageController extends \yii\web\Controller
{
public function actions()
    {
        return [
            'galleryApi' => [
                'class' => GalleryManagerAction::className(),
                // mappings between type names and model classes (should be the same as in behaviour)
                'types' => [
                    'portfolio' => GalleryImage::className()
                ]
            ],
        ];
    }
    public function actionIndex()
    {
        $dataProvider = GalleryImage::find()->all();
        return $this->render('index', ['model' => $dataProvider[0]]);
    }
}

Модель

class GalleryImage extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
        return 'gallery_image';
    }

    public function rules()
    {
        return [
            [['type', 'ownerId', 'name', 'description'], 'required'],
            [['type', 'ownerId', 'name', 'description'], 'string'],
            [['rank'], 'integer'],
        ];
    }
    public function behaviors()
    {
        return [
            'galleryBehavior' => [
                'class' => GalleryBehavior::className(),
                'type' => 'portfolio',
                'extension' => 'jpg',
                'directory' => '/images/gallery',
                'url' => '/images/gallery/',

                'versions' => [
                    'small' => function ($img) {
                        /** @var \Imagine\Image\ImageInterface $img */
                        return $img
                            ->copy()
                            ->thumbnail(new \Imagine\Image\Box(200, 200));
                    },
                    'medium' => function ($img) {
                        /** @var Imagine\Image\ImageInterface $img */
                        $dstSize = $img->getSize();
                        $maxWidth = 800;
                        if ($dstSize->getWidth() > $maxWidth) {
                            $dstSize = $dstSize->widen($maxWidth);
                        }
                        return $img
                            ->copy()
                            ->resize($dstSize);
                    },
                ]
            ]
        ];
    }

    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'type' => 'Type',
            'ownerId' => 'Owner ID',
            'rank' => 'Rank',
            'name' => 'Name',
            'description' => 'Description',
        ];
    }
}

Во вьющке вывожу

<div class="row">
    <div class="col-xs-12 text-center">
        <div class="panel panel-default">
            <div class="panel-heading">Галерея "Фото"</div>
            <div class="panel-body">
                <?php
                if ($model->isNewRecord) {
                    echo 'Can not upload images for new record';
                } else {
                    echo GalleryManager::widget(
                        [
                            'model' => $model,
                            'behaviorName' => 'galleryBehavior',
                            'apiRoute' => 'portfolio/galleryApi'
                        ]
                    );
                }
                ?>
            </div>
        </div>
    </div>
</div>

Папка с картинками лежит в папках web и в backend'e и в frontend'e. В БД 1 запись

  1. id - 1
  2. type - jpg
  3. ownerid - 3
  4. rank - 10
  5. name - maxresdefault.jpg
  6. description - maxresdefault.jpg

как быть?

Answer 1

Добавь во view:

foreach ($model->getBehavior('galleryBehavior')->getImages() as $image) {
    echo Html::img($image->getUrl('medium'));
}
READ ALSO
Как передать textarea в php

Как передать textarea в php

Пытаюсь настроить отправку сообщенй с формы на e-mailУже все сделал

377
VK Api [IFrame] передача данных в JS

VK Api [IFrame] передача данных в JS

Есть чат на php данные пользователя в chatphp получаю так

363
Почему не подключается класс?

Почему не подключается класс?

Почему у меня все работает в файле public/indexphp:

305