CakePHP 2.10.18
bakeで作成したフォームは、標準ではラベル名がカラム名(英語表記)です。カラム数が多いテーブルだと修正に手間がかかるため、 MySQLのコメントに入力した日本語をラベルに利用する場合の方法を紹介します。
テーブル
CREATE TABLE `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'レコード主キー',
`title` varchar(255) DEFAULT NULL COMMENT 'タイトル',
`body` text COMMENT '本文',
`created` datetime DEFAULT NULL COMMENT 'レコード作成日時',
`modified` datetime DEFAULT NULL COMMENT 'レコード更新日時',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ModelTask.phpを修正
app/vendors/cakephp/cakephp/lib/Cake/Console/Command/Task/ModelTask.php
public function bake($name, $data = array()) {
if ($name instanceof Model) {
if (!$data) {
$data = array();
$data['associations'] = $this->doAssociations($name);
$data['validate'] = $this->doValidation($name);
$data['actsAs'] = $this->doActsAs($name);
}
$data['primaryKey'] = $name->primaryKey;
$data['useTable'] = $name->table;
$data['comment'] = $name->schema();//★追加する
$data['useDbConfig'] = $name->useDbConfig;
$data['name'] = $name = $name->name;
} else {
$data['name'] = $name;
}
--*以下省略*--
bakeテンプレートを修正
app/vendors/cakephp/cakephp/lib/Cake/Console/Templates/default/views/form.ctp
//★変数追加
$field_comment = (isset($schema[$field]['comment'])) ? $schema[$field]['comment']:$field;
$this->Form->input('{$field}', array(
'label' => '{$field_comment}'//★ラベルにコメントを指定
));
bake実行
$ php ./app/Console/cake.php bake -app “/var/www/html/***/app” all