Выдаёт 404 ошибку в бэкэнде, но не во фронтэнде

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
malariuz
Сообщения: 21
Зарегистрирован: 2016.05.12, 09:25

Выдаёт 404 ошибку в бэкэнде, но не во фронтэнде

Сообщение malariuz » 2019.01.04, 17:05

Добрового времени суток!

Ситуация:
На шаблоне Yii2 Advanced в бэкэнде не удаляется фотография. Выдаётся 404 ошибка.

Данные:

Отображение фотографий идёт через Kartik Fileinput Bootstrap.
И именно через кнопку удаления в этом виджете появляется ошибка 404, но сообщение, что именно такого адреса нет.
И ирония в том, что на рабочем хостинге (не локалка) выдаётся ошибка 403 Forbidden, а не 404!
При этом на фронтэнде нет этой ошибки и фотография удаляется, всё как должно быть.

Вот код во view

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

$form->field($uploadForm, 'imageFiles[]')->widget(FileInput::class, [
                //'name' => 'attachment_53',
                'options' => ['multiple' => true, 'accept' => 'image/*'],
                'pluginOptions' => [
                    'deleteUrl' => Url::to(['/ads-moderation/delete-ad-image']),
                    'initialPreviewConfig' => $model->imageLinkData, // конфигурация для удаления фотографий
                    //'deleteExtraData' => ,
                    'initialPreview' => $model->imageLinksFromBackend ? $model->imageLinksFromBackend : '',
                    'initialPreviewAsData' => true,
                    'overwriteInitial' => false,
                    'fileActionSettings' => [
                        //'initialPreviewShowDelete' => false,
                        'showZoom' => false,
                    ],
                    'showCaption' => false,
                    'showRemove' => false,
                    'showUpload' => false,
                    'browseClass' => 'btn btn-primary btn-block',
                    'browseIcon' => '<i class="glyphicon glyphicon-camera"></i> ',
                    'browseLabel' => Yii::t('kupdam', 'Выбрать фото'),
                    'maxFileSize' => 15000,
                    'macFileCount' => 10,            
                ],
            ])
Код в контроллере (действие, на которое ссылается url в ключе deleteUrl)

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

public function actions() 
    {
        return [
            'list-subcategories' => [
                'class' => 'common\actions\ads\ListSubcategories',
            ],
            'list-regions' => [
                'class' => 'common\actions\ads\ListRegions',
            ],
            'list-cities' => [
                'class' => 'common\actions\ads\ListCities',
            ],
            'delete-ad-image-from-ads-table' => [
                'class' => 'common\actions\ads\DeleteAdImageFromAdsTable',
            ],
            'delete-ad-image' => [
                'class' => 'common\actions\ads\DeleteAdImage',
            ],
        ];
    }
И собственно весь класс самого action целиком

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

namespace common\actions\ads;

use Yii;
use common\models\AdsPhotos;
use yii\web\NotFoundHttpException;

class DeleteAdImage extends \yii\base\Action
{
    public function run()
    {
        $id = Yii::$app->request->post('key');
        $image = AdsPhotos::find()->where(['photo_id' => $id])->limit(1)->one();
        
        if ($image) {
            $path = Yii::getAlias('@webrootFrontend').$image->path;
            if (file_exists($path)) {
                unlink($path);
                return $image->delete() ?: null;
            } else {
                throw new NotFoundHttpException('A file doesn\'t exixt');
            }
             
        } else {
            throw new NotFoundHttpException('A record doesn\'t exixt');
        }
    }
}

Ответить