Cakephpの命名規則を完全無視して作ってみた
Cakephpにはテーブル名をつけるのにも、フィールド名をつけるのにも、コントローラーにも命名規則がありますが、この命名規則に沿わない、いや、むしろ完全無視してアプリケーションを作ってみました。
元々Cakephpベースで作られていないサイトに対して、新規で別の管理画面を作ろうと思った時、命名規則に全く沿わないテーブル、フィールド名ですでに構築されていまして、そのデータのままCakephpを何とか利用しようと思って今回の記事の結果にたどり着いたわけです。
命名規則に反したテーブル、id
本来命名規則に沿って作ることがCakephp開発の前提なのですが、Cakephpではなから作るつもりなかったものを、Cakephpで機能を追加しようと思ったら、現状のテーブル名、フィールド名のまま開発していかなければなりません。
元の名前 | 命名規則 | |
---|---|---|
テーブル名 | banner | banners |
連番(プライマリ) | seq | id |
テーブル名が命名規則から外れていた時のModelの書き方
class Banner extends AppModel { var $name = ‘Banner’; function __construct() { $id = array("id"=>false,//idでプライマリならtrue "table"=>"banner",//テーブル名 ); //$idになりうるprimaryKeyのフィールド名を定義 parent::__construct($id); $this->primaryKey = "seq"; } }
コントローラーが命名規則と外れた場合
コントローラーについては悩む点は特になく、ただ自動でdataに入らないので、$this->Post->read();で読み込んだものが、自動でview側に渡らないので、$this->setしてあげる必要あり。
function edit($id = null) { $this->Banner->id = $id; if (empty($this->data)) { $this->data = $this->Banner->read(); $this->set(‘data’, $this->data); } else { if ($this->Banner->save($this->data['Banner'])) { $this->redirect(‘/url’); } } }
一通り命名規約から外れた際のフォームヘルパー(formヘルパー)の書き方
モデル名とコントローラー名に影響されることが多いのがフォームヘルパー(formヘルパー)だったりします。
例えば、RecCompanyモデルを使っているのに、コントローラーの名前がCompaniesだった時。
基本的には毎回正しいモデル名を割り当ててあげる必要があり、けっこう面倒です。
$form->create
echo $form->create(‘RecCompany’, array(‘type’ => ‘post’, ‘url’ => ‘/companies/recruit/’.$id));
$form->input
echo $form->input(‘RecCompany.message’,array( ‘label’=> false, ‘size’ => false, ‘div’=>false, ‘class’=>’inp-form required’, ‘id’=>false ) );
何事も規約を守ったほうがCakephpの機能を最大限に活かすことが出来ますね。