2017年04月 / 03月≪ 123456789101112131415161718192021222324252627282930≫05月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2010.12.01 (Wed)

CakePHPでコントローラ名のモデルが無いよって怒られる

mypage_controller.php
class MypageController extends AppController{
var $name = 'Mypage';
var $components = array('Session');
function index(){}
}

て感じのコントローラを作って、いざ実行してみるとブラウザに

Missing Database Table
Error: Database table mypages for model Mypage was not found.

Notice: If you want to customize this error message, create app\views\errors\missing_table.ctp

っていうエラーが出た。データベースにmypagesっていうテーブルが無いってこと?
当たり前じゃんテーブル作って無いもん。ていうかMypageっていうモデル自体作って無いもん。

意味がわからないのでトレース表示してみてソースを追ってみたら
どうやらここで呼んでるみたい。
cake/libs/controller/controller.php
if ($this->uses === false) {
$this->loadModel($this->modelClass, $id);
} elseif ($this->uses) {
...

$usesは指定していなかったので、$this->uses===falseで$this->modelClassに設定されてる名前のモデルをロードする処理に入ったようだ。
この$this->modelClassはおなじcontroller.phpのコンストラクタで
$this->modelClass = Inflector::classify($this->name);

でコントローラ名が入れられている。

このおせっかいめ・・・・
$this->usesを使わない場合はarray()を入れる。公式ではそうしろって書いてあった。むしろ書くのが普通だった。
うっかり忘れてた自分が悪かったんだ・・・・また引っかかりそうなんでメモ。
class MypageController extends AppController{
var $name = 'Mypage';
var $components = array('Session');
var $uses = array();
function index(){}
}




 |  05:31  |  未分類  |  トラックバック(0)  |  コメント(0)  |  Top↑

Comment

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。