Size: a a a

2020 April 17

AM

Alexander Makarov in Yii Framework 3
A
https://github.com/aushev06/yii3 - Обычная Todo с простым CRUD

Delete так и не победил

Пытался и внутри формы указывать _method="DELETE"
Не сработало
Этот  _method="x" костыль выпилен из Yii 3.
источник

AM

Alexander Makarov in Yii Framework 3
@xepozz, @roxblnfk может сформулируете ваши идеальные варианты в https://github.com/yiisoft/yii-web/issues/245? А то я так и не понял, чего вы предлагаете...
источник

AM

Alexander Makarov in Yii Framework 3
A
https://github.com/aushev06/yii3 - Обычная Todo с простым CRUD

Delete так и не победил

Пытался и внутри формы указывать _method="DELETE"
Не сработало
Так POST работает?
источник

A

A in Yii Framework 3
POST да, POST норм пашет
источник

А

Алексей R in Yii Framework 3
с фабрикой респонса норм, лишь бы она не использовалась в классах мидлварей
источник

AM

Alexander Makarov in Yii Framework 3
Алексей R
с фабрикой респонса норм, лишь бы она не использовалась в классах мидлварей
Напиши в issue, пожалуйста. Я запутался :(
источник

AM

Alexander Makarov in Yii Framework 3
A
POST да, POST норм пашет
Есть желание подебажить? Метод getTokenFromRequest() класса Csrf. Нужно посмотреть, что там в $parsedBody. Сразу станет понятно в чём дело...
источник

A

A in Yii Framework 3
Можно

Сейчас запушу проект
источник

A

A in Yii Framework 3
Этот класс ?
Yiisoft\Yii\Web\Middleware\Csrf
источник

A

A in Yii Framework 3
Этот метод приватный

При таком маршруте возвращает он это

Route::post('/delete/{id}', [TodoController::class, TodoController::ACTION_DESTROY])
                   ->addMiddleware(function (\Psr\Http\Message\ServerRequestInterface $request, Csrf $csrf) {
                       dd($csrf->getTokenFromRequest($request));
                   })
                   ->name(TodoController::getRouteName(TodoController::ACTION_DESTROY)),
источник

A

A in Yii Framework 3
А если указать Route::delete, то 422 и до мидлвара не доходит
источник

A

A in Yii Framework 3
 public function open(): void
   {
       if ($this->isActive()) {
           return;
       }

       if ($this->sessionId !== null) {
           session_id($this->sessionId);
       }

       try {
           dd("Сработает");
           session_start($this->options);
           dd("Не сработает");
           $this->sessionId = session_id();
       } catch (\Throwable $e) {
           throw new SessionException('Failed to start session', $e->getCode(), $e);
       }
   }


Я потихоньку прошелся с dd и вот
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
есть еще безумная идея)
в контроллере возвращаем имя урота/полный урл
и где-нибудь в мидлваре генерим из этого объект ResponseInterface)
Нафига, если ты прямо в абстрактном контроллере можешь сделать методы redirectToUrl и redirectToRoute, и возвращать в экшине так
return this->redirectToRoute('user/login');
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Нафига, если ты прямо в абстрактном контроллере можешь сделать методы redirectToUrl и redirectToRoute, и возвращать в экшине так
return this->redirectToRoute('user/login');
А если хендлер не контроллер?
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
А если хендлер не контроллер?
Ну так речь шла о контроллере. Если нет, то и с чистым риспонсом редирект делается легко, обертка с методом нужна чисто для удобства
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Ну так речь шла о контроллере. Если нет, то и с чистым риспонсом редирект делается легко, обертка с методом нужна чисто для удобства
Как легко? Руками хедер + формирование URL через url generator?
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Как легко? Руками хедер + формирование URL через url generator?
Ну да
источник

AM

Alexander Makarov in Yii Framework 3
неудобно
источник

AM

Alexander Makarov in Yii Framework 3
A
А если указать Route::delete, то 422 и до мидлвара не доходит
ЭЭЭ... 422 возвращает только CSRF middleware вроде.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
неудобно
Ну тогда можно оставить и текущую мидлтварь с отложенным внедрением урлгенератора
источник