CakePHP」タグアーカイブ

CakePHPでスマフォ向け振り分け

CakePHPでスマフォ向けのサイトをPC版と共存させる場合、振り分けは、Layoutを変えるより、Themeを切り替える方が良いようだ。

 

CakePHPのテーマ
http://book.cakephp.org/2.0/ja/views/themes.html

CakePHPでモバイルとPCのレイアウトを分ける手順 asklife |

テーマ毎にCakePHPのデザインを分ける | CakePHP情報

cakephpでスマートフォンかどうか判定する | polidog lab++

CakePHPで名前付き引数

こういうURL

http://www.kalium.net/cakephp/film/index/foo:1/bar:1002

で名前付きの引数を渡す場合は、コントローラーでこの様に受け取ることができる

<?php
$foo = $this->params['named']['foo'];
$bar = $this->params['named']['bar'];
?>

HTMLヘルパーで上の様なURLを出力する場合は、

<?php echo $html->link("List", array('controller' => 'films', 'action' => 'index', "foo" => 1, "bar" => 1002 )); ?> 

CakePHPで、新規作成時に、関連するModelを一緒に追加する

Userテーブルに新規登録する時に、Userのメタ情報などが入っているUserProfileなどのテーブルに、同時にレコードを登録する方法。

データを保存する :: モデル :: CakePHPによる開発 :: マニュアル :: 1.3コレクションからのコピペですがメモ。

function add() {
	if (!empty($this->data)) {
		// User モデルのデータを保存します。
		// このデータは $this->data['User'] にあります。
 
		$user = $this->User->save($this->data);

		// User が保存されたら、Profile データに User の情報を追加し
		// 保存します。      
		if (!empty($user)) {
			// 新しく生成した User の ID は、
			// $this->User->id にセットされます。
			$this->data['Profile']['user_id'] = $this->User->id;

			// User は Profile と hasOne のアソシエーションで関連付いているので
			// User モデルを通して Profile モデルにアクセスできます:
			$this->User->Profile->save($this->data);
		}
	}
}

要は、親Modelのaddに同時に追加する処理を書くと言うこと…。ここら辺も、自動化されると楽だなぁと思ったり。

1.3.xでは、Sessionは自動的に読み込まれない

CakePHP1.3では、Session Helper, Session Componentは自動的に読み込まれないので、明示的に読み込む必要がある。bakeしたview内で用いられているSetFlashメソッドすらエラーが出る始末。慣れないとめんどい。

	var $components = array('Session');
	var $helpers = array('Session');

CakePHPで使うDBのテーブル名に接頭辞

CakePHPで使うDBのテーブル名に接頭辞を付けて使うには、app/config/database.phpで以下のように記述する。

<?php
class DATABASE_CONFIG {

	var $default = array(
		'driver' => 'mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'user_name',
		'password' => '',
		'database' => 'database',
		'encoding' => 'utf8',
	    'prefix' => 'prefix_', //here
	);
}
?>