CakePHPでスマフォ向けのサイトをPC版と共存させる場合、振り分けは、Layoutを変えるより、Themeを切り替える方が良いようだ。
CakePHPのテーマ
http://book.cakephp.org/2.0/ja/views/themes.html
CakePHPでモバイルとPCのレイアウトを分ける手順 asklife |
CakePHPでスマフォ向けのサイトをPC版と共存させる場合、振り分けは、Layoutを変えるより、Themeを切り替える方が良いようだ。
CakePHPのテーマ
http://book.cakephp.org/2.0/ja/views/themes.html
CakePHPでモバイルとPCのレイアウトを分ける手順 asklife |
ShellとTaskの違いだが、
TaskはShellから呼び出すことのできるコンポーネントという位置付けの様だ
わかりやすい用例は、こちら
こういう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 )); ?>
UsersController内で、以下の様に、beforeFilterで指定する。
function beforeFilter(){ $this->Auth->loginRedirect = array('controller' => 'foo', 'action' => "admin_index"); }
CakePHP1.3でページタイトルを設定する方法が変わった
Controllerのアクション内で、
$this->set('title_for_layout', "ページタイトル");
というように設定
View内では、
echo $title_for_layout;
と、これまで通りに出力
親Modelに、以下の様に記述する。
public $hasOne = array( "Profile" => array( "className" => 'Profile', "dependent"=>true, //ここで同時に削除するように指定 "foreignKey"=>'user_id', ); );
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に同時に追加する処理を書くと言うこと…。ここら辺も、自動化されると楽だなぁと思ったり。
CakePHP1.3では、Session Helper, Session Componentは自動的に読み込まれないので、明示的に読み込む必要がある。bakeしたview内で用いられているSetFlashメソッドすらエラーが出る始末。慣れないとめんどい。
var $components = array('Session'); var $helpers = array('Session');
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 ); } ?>
CakePHP 1.3が出ていたとは、知らなかった。ここに、差分内容が載っている。