Обновление картинки By Using Kartik's Fileinput In Yii2.0

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение frmaxm »

Привет, не как не выходит обновить картинку.

Вьюха

Код: Выделить всё

<?php $form = ActiveForm::begin([
        'id' => 'Items',
        'enableClientValidation' => false,
        'errorSummaryCssClass' => 'error-summary alert alert-error',
        'options' => ['enctype' => 'multipart/form-data', 'accept' => 'image/*']
    ]);
    ?>
    <?php echo $form->errorSummary($model); ?>

<?php echo FileInput::widget([
        'name' => 'photo_image[]',
        'model' => $photos,
        'options'=>[
            'multiple'=>true
        ],
        'pluginOptions' => [
            'initialPreview'=>\yii\helpers\ArrayHelper::getValue($items_photos, 'initialPreview'),
            'initialPreviewAsData'=>false,
            'initialCaption'=>"The Moon and the Earth",
            'initialPreviewConfig' => \yii\helpers\ArrayHelper::getValue($items_photos, 'initialPreviewConfig'),
            'deleteUrl' => "file-delete",
            'uploadUrl' => "file-upload?id=".$model->id,
            'overwriteInitial'=>false,
        ],
    ]);
    ?>
<?php ActiveForm::end(); ?>
Модель

Код: Выделить всё

class Photo extends BasePhoto
{
    const INSERT = 'insert';
    const UPDATE = 'update';

    public function scenarios()
    {
        $scenarios = parent::scenarios();
        $scenarios[self::INSERT] = ['photo_image'];
        $scenarios[self::UPDATE] = ['photo_image'];
        return $scenarios;
    }

    public function rules()
    {
        return [
            [['photo_image'], 'safe', 'on' => ['upload', 'update']],
            [['photo_image'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg', 'maxFiles' => 15, 'on' => ['insert', 'update']],
        ];
    } 
Контроллер

Код: Выделить всё

public function actionFileUpload($id){
        $model = new Photo();
        if(\Yii::$app->request->isPost) {
            $photos = new Photo();
            $photos->photo_image = UploadedFile::getInstances($photos, 'photo_image');
            dd($_POST, $_FILES, $photos);

        }
        return false;
    }

//            dd($_POST, $_FILES, $photos);
 
Дамп

Код: Выделить всё

[
    0 => [
        'file_id' => '0'
    ]
    1 => [
        'photo_image' => [
            'name' => [
                0 => '02151006.JPG'
            ]
            'type' => [
                0 => 'image/jpeg'
            ]
            'tmp_name' => [
                0 => '/tmp/phpcXtPBi'
            ]
            'error' => [
                0 => 0
            ]
            'size' => [
                0 => 6651723
            ]
        ]
    ]
    2 => common\models\Photo#1
    (
        [yii\db\BaseActiveRecord:_attributes] => [
            'photo_image' => []
        ]
        [yii\db\BaseActiveRecord:_oldAttributes] => null
        [yii\db\BaseActiveRecord:_related] => []
        [yii\base\Model:_errors] => null
        [yii\base\Model:_validators] => null
        [yii\base\Model:_scenario] => 'default'
        [yii\base\Component:_events] => [
            'beforeInsert' => [
                0 => [
                    0 => [
                        0 => yii\behaviors\TimestampBehavior#2
                        (
                            [createdAtAttribute] => 'created_at'
                            [updatedAtAttribute] => 'updated_at'
                            [value] => yii\db\Expression#3
                            (
                                [expression] => 'NOW()'
                                [params] => []
                            )
                            [attributes] => [
                                'beforeInsert' => [
                                    0 => 'created_at'
                                    1 => 'updated_at'
                                ]
                                'beforeUpdate' => 'updated_at'
                            ]
                            [owner] => common\models\Photo#1(...)
                        )
                        1 => 'evaluateAttributes'
                    ]
                    1 => null
                ]
                1 => [
                    0 => [
                        0 => yiidreamteam\upload\ImageUploadBehavior#4
                        (
                            [attribute] => 'photo_image'
                            [createThumbsOnSave] => true
                            [createThumbsOnRequest] => false
                            [thumbs] => [
                                'thumb' => [
                                    'width' => 550
                                    'height' => 700
                                ]
                                'large' => [
                                    'width' => 600
                                    'height' => 800
                                ]
                            ]
                            [thumbPath] => '@webroot/uploads/items/[[attribute_items_id]]/photos/[[attribute_id]].[[extension]]'
                            [thumbUrl] => '/uploads/items/[[attribute_items_id]]/photos/[[attribute_id]].[[extension]]'
                            [filePath] => '@frontend/private/items/[[attribute_items_id]]/photos/[[attribute_id]]_original.[[extension]]'
                            [fileUrl] => '/private/items/[[attribute_items_id]]/photos/[[attribute_id]]_original.[[extension]]'
                            [parentRelationAttribute] => null
                            [*:file] => null
                            [owner] => common\models\Photo#1(...)
                        )
                        1 => 'beforeSave'
                    ]
                    1 => null
                ]
            ]
            'beforeUpdate' => [
                0 => [
                    0 => [
                        0 => yii\behaviors\TimestampBehavior#2(...)
                        1 => 'evaluateAttributes'
                    ]
                    1 => null
                ]
                1 => [
                    0 => [
                        0 => yiidreamteam\upload\ImageUploadBehavior#4(...)
                        1 => 'beforeSave'
                    ]
                    1 => null
                ]
            ]
            'beforeValidate' => [
                0 => [
                    0 => [
                        0 => yiidreamteam\upload\ImageUploadBehavior#4(...)
                        1 => 'beforeValidate'
                    ]
                    1 => null
                ]
            ]
            'afterInsert' => [
                0 => [
                    0 => [
                        0 => yiidreamteam\upload\ImageUploadBehavior#4(...)
                        1 => 'afterSave'
                    ]
                    1 => null
                ]
            ]
            'afterUpdate' => [
                0 => [
                    0 => [
                        0 => yiidreamteam\upload\ImageUploadBehavior#4(...)
                        1 => 'afterSave'
                    ]
                    1 => null
                ]
            ]
            'beforeDelete' => [
                0 => [
                    0 => [
                        0 => yiidreamteam\upload\ImageUploadBehavior#4(...)
                        1 => 'beforeDelete'
                    ]
                    1 => null
                ]
            ]
            'afterFileSave' => [
                0 => [
                    0 => [
                        0 => yiidreamteam\upload\ImageUploadBehavior#4(...)
                        1 => 'afterFileSave'
                    ]
                    1 => null
                ]
            ]
        ]
        [yii\base\Component:_behaviors] => [
            0 => yii\behaviors\TimestampBehavior#2(...)
            1 => yiidreamteam\upload\ImageUploadBehavior#4(...)
        ]
    )
]
 
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение frmaxm »

Никто не работал с FileInput от картика? и не делал обновление картинок?
godzie
Сообщения: 62
Зарегистрирован: 2016.04.03, 00:38

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение godzie »

Рискну предположить, что никто не понимает что вы имеете ввиду под обновлением картинки (по крайне мере я, точно) :)
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение frmaxm »

- actionCreate()
добавляет картинки к нужному товару

-actionUpdate()
обновляет картинки к нужному товару, т.е. удалить и добавить другие картинки (удалить работает)
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение Nerf »

1) Используемое вами поведение не работает с несколькими картинками.
2) Работает оно при сохранении модели.
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение frmaxm »

Nerf писал(а):1) Используемое вами поведение не работает с несколькими картинками.
2) Работает оно при сохранении модели.

Какой бихевер посоветуете? Для сохранения и обновления нескольких картинок.
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение rosolovsky »

В этом Yii 2 с картинками большой геморой. Если загрузить картинки проблем нет, то манипулирование уже жесть. Лучше сразу посмотри в сторону файлового менеджера.
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение frmaxm »

rosolovsky писал(а):В этом Yii 2 с картинками большой геморой. Если загрузить картинки проблем нет, то манипулирование уже жесть. Лучше сразу посмотри в сторону файлового менеджера.
Спасибо, да буду наверное в эту сторону и смотреть - нормального решения похоже нет, не через какой витжет.
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение rosolovsky »

Я так понял тебе надо к товару добавить изображения. При добавлении товара, например в отдельном табе загрузить картинки, отобразитиь превьюшки, выбрать там главную картинку, если надо удалить ненужные, подгрузить нужные. При сохранении товара привязаные картинки сохраняются в отдельной таблице. Теперь при редактировании товара, нужно опять же, в отдельном табе отобразить превюшки привязаных изображений, удалить ненужные, загрузить нужные, опять сохранить товар, при все этом ненужные картинки удаляются с сервера. Такая себе галерея изображений товара. Верно? Так вот всего этого готового нет, максимум это загрузка изображений. На этом этапе я тоже застопорился, нужно реализовывать все это вручную. :)
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение frmaxm »

Я уже реализовал но думал просто может кто натыкался на норм виджет для редактирования и добавления картинок.
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение rosolovsky »

И как реализовал, если не сложно пояснить в общих чертах?
frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: Обновление картинки By Using Kartik's Fileinput In Yii2.0

Сообщение frmaxm »

Сделал удаление(от картика) и добавление новой в отдельном окне (просто добавляю по id_товара) новые картинки.
Ответить