Как обновить c помощью Pajax — GridView c изображением при нажатии на кнопку?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
teodor7teodor7
Сообщения: 3
Зарегистрирован: 2017.05.25, 09:46

Как обновить c помощью Pajax — GridView c изображением при нажатии на кнопку?

Сообщение teodor7teodor7 »

Нужно сделать вот так https://www.youtube.com/watch?v=8ikb0dz0vDw

В итоге есть такой код

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

public function actionRotate($id)
    {
        $model = $this->findModel($id);

     Image::frame(UserImages::FILE_PATH . Yii::$app->user->identity->id . DIRECTORY_SEPARATOR .    $model->image, 0, 0)
            ->rotate(90)
            ->save(UserImages::FILE_PATH . Yii::$app->user->identity->id . DIRECTORY_SEPARATOR .    $model->image, ['jpeg_quality' => 100]);

        if (Yii::$app->request->isAjax)
            return $this->renderList();
        else
            return $this->redirect(['index']);

    }protected function renderList()
    {
        $searchModel = new UserImagesSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $modelImages = new UserImagesForm();
        $dataProvider->sort->route = Url::toRoute(['index']);

        $method = Yii::$app->request->isAjax ? 'renderAjax' : 'render';

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

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

<?php Pjax::begin(['id' => 'images-list','timeout' => 500, 'enablePushState'=>false]); ?>    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            [
                'label' => 'Image',
                'format' => 'raw',
                'value' => function($data){
                    return Html::img('uploads/images/user_'.Yii::$app->user->identity->id.'/'.$data->image,[
                        'style' => 'width:150px;'
                    ]);
                },
            ],
        [
            'class' => 'yii\grid\ActionColumn',
            'template' => '{rotate}{delete}',
            'buttons' => [
                'rotate' => function ($url,$model) {
                    return Html::a(' <button type="button" class="btn btn-primary">'.Yii::t('app', 'Rotate').'</button>', $url,
                        [
                            'title' => Yii::t('app', 'Rotate'),
                            'data-method'=>'POST',
                            'data-pjax' => '#images-list',

                        ]);
                },
               'delete' => function ($url,$model) {
                   return Html::a(' <button type="button" class="btn btn-danger">'.Yii::t('app', 'Delete').'</button>', $url,
                       [
                           'title' => Yii::t('app', 'Delete'),
                           'data-method'=>'POST',
                           'data-pjax' => '#images-list',
                           'data-confirm'=>Yii::t('app', 'Are you sure you want to delete this item?'),
                       ]);
               },
                ],
            ],
        ],
    ]); ?>
<?php Pjax::end(); ?></div>
Картинка при нажатии на rotate должна переворачиваться и обновляться в gridview. При удалении все нормально, но при вращении приходит страница, но картинка не переворачивается. Метод проверял он работает если просто пройти то все нормально срабатывает и переворачивается.

Насколько понимаю это кеширование изображений. Как лучше реализовать эту задачу?
sosnovskiy
Сообщения: 239
Зарегистрирован: 2017.03.28, 20:03

Re: Как обновить c помощью Pajax — GridView c изображением при нажатии на кнопку?

Сообщение sosnovskiy »

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

return Html::img('uploads/images/user_'.Yii::$app->user->identity->id.'/'.$data->image.'?r='.time(),[
    'style' => 'width:150px;'
]);
Ответить