「PHP」カテゴリーアーカイブ

[Laravel]Ajaxで画像をPOSTし、FormRequestでバリデーションかけると画像だけ存在しない

 

ってあったとして
Ajaxで
new FormData($(‘#form’)[0]);
したものを送るとFormRequestにはnameしか来ないのでimgのバリデーションが通らない
確認方法
$this->request->all();

でもその後コントローラーで
$this->request->all();
するとちゃんとimg入ってる

さんざん悩んで気づいたのが
FormRequest内で
$this->file(‘img’);
ってやると一応存在はしてたんだ
なんかSymfony?使ってるっぽい?
多分このもう一歩先に答えが有るんだろうけど私の頭ではここまでで限界w

FormRequest内にValidationDataメソッドを作成して

したった。
無理やりデータ追加してるし多分なんか違うんだろうなと思うんだけど
どうせコントローラーにrequestが渡る時にimg上書きされるんだろうし
バリデーションかかれば何でもいいやということで一応解決

でもスッキリしない

CakePHP3、Search Pluginで複数のモデルから検索

なんだろ、Search Pluginのバージョン?CakePHPが3だから?
やりたいことがなかなか出てこなかったのでメモ

Search Pluginは普通メインのテーブルからのみの検索となるので
それに紐付いてるテーブルからも検索できるようにしたかった。

コントローラー側の
public $presetVarsと
モデルの
public $filterArgsを設定すればできた

メインのモデルに紐付いてるモデルをHogesモデルだとすると
コントローラー側のpublic $presetVarsを

statusはメインのモデルなのでモデル名を指定しないでも大丈夫だった
Hoges.hoge_idというのは、field名hoge_idという検索フォームはHogesモデルのhoge_idカラムから検索してね
という意味なんだと思う

ただ、コレだけだと動かなくて

モデルのpublic $filterArgsを

というようにコントローラーに書いたのと同じ感じで書いてあげると動いた。
ただメインのモデルにHogesという別モデルのことも書かなきゃいけないのがちょっと違和感……