ネット偽善者でもいいじゃない

悩んでるなら面白いマンガ読もう

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を設定して、エラーメッセージを表示させてみようとすると

どうもドットインストールの動画と表示されるメッセージが違う・・・

f:id:Yhei:20140707174449p:plain

何も指定してないのに既に日本語で

「このフィールドを入力してください。」

と表示される。

 

まぁいいかと思ってバリデーションに'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のコメントをアソシエーションしてみよう

のところだけは何故かコメントが挿入されなかった・・・ここは未解決

ひとまず先に進んで問題は無かったものの、何かしらのエラーメッセージのようなやつが表示されてた。

いつかわかったら追記しようかな・・・