ナチュログ管理画面 その他 その他 東海 アウトドア&フィッシングナチュラムアウトドア用品お買い得情報
ブログ作成はコチラ
あなたもナチュログでアウトドア生活を綴ってみませんか?
プロフィール
MJ
組込み系のエンジニアをやっていましたが、時代の流れとともにWeb系にシフトし、最近では、その技術を生かしIT技術講師をやっています。
私が目指す講義のあり方は、技術者として当然スキルは身につけていただきますが、人としても育っていただきたいと考えています。

アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
QRコード
QRCODE
Information
アウトドア用品の
ご購入なら!

2014年07月20日

2014/07/15 CakePHP2 -4- MVCマスタ情報表示 どこをいじればいいの。。。

以前、「2014/07/09 CakePHP2をインストールと自動生成」で、自動生成について触れました。

今回は、DBは正規化するものですが、正規化するとDBが細かくなります。◎◎コードを別テーブルにしたり、繰り返し項目も別テーブルにしないと、後で膨大な重複データを精査する作業に死にそうになるので、最初が肝心です。
で、目的をはっきりさせると、大分類をコンボボックスで選ぶってだけです。
こんなん、cake使わなければ、秒殺なのにぃ~と思いますよねw
ですが、まぁーcakeを覚えるために。。。

ちなみに、やり方はイロイロあるようですが、最も理想的と思われる方法で行います。


1.DB作成
--施設DB
CREATE TABLE IF NOT EXISTS `m_institution` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '施設id',
`institution_kind_l_cd` char(9) NOT NULL COMMENT '施設大分類コード3桁',
`name` varchar(90) NOT NULL COMMENT '施設名',
`created` datetime NOT NULL COMMENT '作成日',
`modified` datetime NOT NULL COMMENT '更新日',
PRIMARY KEY (`id`,`institution_kind_l_cd`),
KEY `institution_kind_l_cd` (`institution_kind_l_cd`),
KEY `institution_kind_m_cd` (`institution_kind_m_cd`),
KEY `institution_kind_n_cd` (`institution_kind_n_cd`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='施設マスタ' AUTO_INCREMENT=1 ;

--大分類
CREATE TABLE IF NOT EXISTS `m_institution_kind_l` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '施設種類id',
`cd` char(9) NOT NULL COMMENT '施設大分類コード3桁',
`name` varchar(60) NOT NULL COMMENT '施設大分類名',
`created` datetime NOT NULL COMMENT '作成日',
`modified` datetime NOT NULL COMMENT '更新日',
PRIMARY KEY (`id`),
UNIQUE KEY `cd` (`cd`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='施設大分類マスタ' AUTO_INCREMENT=1;

--外部キー指定
ALTER TABLE `m_institution`
ADD CONSTRAINT `m_institution_ibfk_1` FOREIGN KEY (`institution_kind_l_cd`) REFERENCES `m_institution_kind_l` (`cd`);


これで、DBはできました。
では、bakeします。


cd c:\pleiades\xampp\htdocs\yoyaku\app
.\Console\cake bake all テーブル名


抜粋したので、DBでエラー出たらごめんなさいねwww

2.Controllerを編集する
ここが重要です。私のインストールしたフォルダ構成だと、C:\pleiades\xampp\htdocs\yoyaku\app\Controller\MInstitutionsController.php
を修正します。


App::uses('AppController', 'Controller');
//追加するクラスを追加します。
App::uses('MInstitutionKindL', 'Model');
/**
* MInstitutions Controller
*
* @property MInstitution $MInstitution
* @property PaginatorComponent $Paginator
*/
class MInstitutionsController extends AppController {

/**
* Components
*
* @var array
*/
public $components = array('Paginator');

/**
* 関連DB
* @var unknown
*/

//このメソッド毎追加します。このメソッドはディスパッチされたときに必ず呼び出されるので、
//たとえば、~後略~で省略されているadd,view,index,delete毎にひつようなら、そこで①から5行を追加する必要があります。
/**
* 一番最初に呼ばれるらしい。(オーバーライド)
* @see Controller::startupProcess()
*/
public function startupProcess(){
parent::startupProcess();

//①Javaだとおこられますよね。クラス名と変数名を同じ名前にするとか。。。
$MInstitutionKindL = new MInstitutionKindL();
$result = $MInstitutionKindL->find('list');
//② 'selectMInstitutionKindL'の名前で、検索結果を設定します。この設定値は、Viewでも使用できます。
$this->set( 'selectMInstitutionKindL', $MInstitutionKindL->find( 'list', array(
'fields' => array( 'cd', 'name') //既存のフィールド
)));
}

/**
* index method
*
* @return void
*/
public function index() {
$this->MInstitution->recursive = 0;
$this->set('mInstitutions', $this->Paginator->paginate());
}
~後略~
}




Controllerでsetした。selectMInstitutionKindLを使用します。①をコメントアウトして、②を追加します。これで、コンボボックスで選択可能です。
~前略~
//①
// echo $this->Form->input('institution_kind_l_cd');
//②
echo $this->Form->input( 'institution_kind_l_cd', array(
'type' => 'select',
'options' => $selectMInstitutionKindL
));
~後略~


こんな感じで、マスタに登録した情報のドロップダウンリストが表示されますw
2014/07/15 CakePHP2 -4- MVCマスタ情報表示 どこをいじればいいの。。。

今回はこのあたりで。。。

●倒れるだけで腹筋ワンダーコアでおなじみの商品です。
ショップジャパン 【正規品】ワンダーコア(WONDER CORE)DVD付
ショップジャパン 【正規品】ワンダーコア(WONDER CORE)DVD付




同じカテゴリー(CakePHP2)の記事画像
2014/07/23 CakePHP2 -6- Time型で時刻だけ表示したい どこをいじればいいの。。。
2014/07/22 CakePHP2 -5- VIew(DB)とMVCマスタ情報表示 どこをいじればいいの。。。
2014/07/13 CakePHP2 -3-国際化どこをいじればいいの。。。
2014/07/09 CakePHP2をインストールと自動生成
同じカテゴリー(CakePHP2)の記事
 2014/07/23 CakePHP2 -6- Time型で時刻だけ表示したい どこをいじればいいの。。。 (2014-07-23 13:38)
 2014/07/22 CakePHP2 -5- VIew(DB)とMVCマスタ情報表示 どこをいじればいいの。。。 (2014-07-23 00:42)
 2014/07/13 CakePHP2 -3-国際化どこをいじればいいの。。。 (2014-07-13 17:10)
 2014/07/11 CakePHP2 -2-Model&Viewどこをいじればいいの。。。 (2014-07-11 18:19)
 2014/07/10 CakePHP2 -1-Controllerどこをいじればいいの。。。 (2014-07-11 00:16)
 2014/07/09 CakePHP2をインストールと自動生成 (2014-07-09 22:01)

※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
2014/07/15 CakePHP2 -4- MVCマスタ情報表示 どこをいじればいいの。。。
    コメント(0)