またどこかでCTOっぽいことやってる人のブログ

フリーランスを経て、またどこかでCTOっぽいことをやってる人が書いてます。何か色々やってます。

CakePHP3で画像登録しようとしたら怒られた。

久しぶりの更新を。
何かしていたかと言われたら特に何もしていないのですが、7月から新しい職場で働くことになったりしました。
となると、このブログのタイトルもどうなんだろうと思うのですが、それはそれということにしておきます。

今回は恥ずかしいネタです。

・やりたかったこと
 フォームにfile属性で画像を指定してバイナリデータで保存したい

・発生したこと
 Unexpected field 〜
 Missing field 〜
 と怒られた

前にもこんなことがあったなと10分ぐらい悩んでいたんですが、CSRFが有効になってる時のアレでした。
原因はフォームの書き方です。パラメータが足りなかったので怒られていました。
CSRF有効にしているのでフォームヘルパーで書くところまではよかったのですが。
こんな時は以下のパラメータが多分抜けているので追加すればOKです。

<?php
   <?php echo $this->Form->create(null, [
          'type' => 'post', 
          'enctype' => 'multipart/form-data',    // 多分これがない
          'url' => [
                  'controller' => 'users', 
                  'action' => 'exec'
          ]
    ]); ?>

    // フォームを形成する要素などなど

    <?php echo $this->Form->end(); ?>

CSRFを解除する前に確認するといいんじゃないかと思います。