Yii2のCSRF検証に問題があります。検証はgiiによって生成されたデフォルトのフォームで正常に機能しますが、htmlタグを使用してフォームを編集すると、フォームの送信によって不正なリクエストエラーがスローされます。エラーを隠すためにcsrf検証を無効にしましたが、アプリケーションとデータ検証のセキュリティのためにこれを使用したいと思います。
このエラーを解決する方法はありますか、またはこのシナリオで正しく機能するように構成する方法はありますか?
たぶん、あなたのhtmlフォームには隠された_csrf
フィールド。標準のYii2ウィジェットによって自動的に生成されます。
したがって、カスタムフォームの最小コードは次のようになります。
<form method="post">
<input type="hidden" name="<?= Yii::$app->request->csrfParam; ?>" value="<?= Yii::$app->request->csrfToken; ?>" />
<button type="submit"> Save </button>
</form>
これを試して
<?=yii\helpers\Html::hiddenInput(Yii::$app->request->csrfParam, Yii::$app->request->csrfToken)?>