ひとりまとめ

もろもろのメモ

CakePHP 1つのアクションで2つの処理を入れたらMissing argument

今回はいつも以上にタイトルがわかりにくい・・・。

1つのアクションで2つの処理というのは、CakePHPでよく見られる
function edit($id){
 if(empty($this->data)){
 (入力のときの処理)
 }else{
 (登録のときの処理)
 }
}
みたいなのを指したつもりでおります。

今までこういう書き方をしたことがなく、入力は入力のアクション・登録は登録のアクションってやっていたのですが、入力エラーの表示を楽してやろうと思ったら↑のような書き方がいいのかな?ということでチャレンジ。


で、なにも考えず今まで2つに分けていた処理を$this->dataが空かどうかで判別してひとまとめにしてみたところ、Missing argumentというアラートが表示されてまいました。
DBをみると値は保存できてるのだけど、Noticeって出るしなんでやろなーと。


よくよく自分で作った2つの処理を見比べてみたところ、入力時は引数が必要で登録時は引数を必要としないことになってました。(submitボタンで指定しているURLに引数を付けてなかった)
うむ、ひょっとしてこれかいな?ということで
 function edit($id){

 function edit($id = ""){
としてみたところ、アラートが消えた!


まあ、当たり前か・・・。
初期値を指定してあげるか、もしくはsubmitのところでも引数を付けてあげるかして、流れを整理せんといかんですね。普段の書き方を変えたので、cake独自ななにかかと思ってしまったという失敗談でした。