cakephp練習と、躓いた所、解決策
ドットインストールを参考にcakephpを練習
CakePHP入門 (全32回) - プログラミングならドットインストール
主に詰まった所と解決策を備忘録がてらメモ
#15で、Add Postを行ったがerrorが生じる(Success!が表示されない)
Error: Call to a member function setFlash() on a non-object
文字入力ミスなどはなさそうなので解決策を検索
↓
同様のエラーを起こしてる質問者を発見
"on a non-object エラーの確認方法(cakephp)" フォーラム - CakePHP Users in Japan
UserController.phpに下記の指定を追加する
public $components = array('Session');
追加する場所は、
public function add() { の一行上に追加した
これにてエラーは解消したが、なんでこの方法で解消できたかはわからず(^_^;)
#16 エラーチェックをしてみよう
validationを設定して、エラーメッセージを表示させてみようとすると
どうもドットインストールの動画と表示されるメッセージが違う・・・
何も指定してないのに既に日本語で
「このフィールドを入力してください。」
と表示される。
まぁいいかと思ってバリデーションに'message'を追加するものの変更されず・・・
似たような現象が起きてる方がいらっしゃいました↓
CakePHP 2.3.10でモデルに指定したフィールドのバリデーションエラーメッセージが無視される問題 | jugedred.net
というわけで、この例にならってadd.ctpに文を追加
<?php
echo $this->Form->create('Post');
echo $this->Form->input('title');
echo $this->Form->input('body', array('rows'=>3));
echo $this->Form->end('Save Post');
を
<?php
echo $this->Form->create('Post');
echo $this->Form->input('title', array('required'=>false));
echo $this->Form->input('body', array('rows'=>3, 'required'=>false));
echo $this->Form->end('Save Post');
に変更
これで、ドットインストールと同じような結果になった。
#28のコメントをアソシエーションしてみよう
のところだけは何故かコメントが挿入されなかった・・・ここは未解決
ひとまず先に進んで問題は無かったものの、何かしらのエラーメッセージのようなやつが表示されてた。
いつかわかったら追記しようかな・・・