Contenu connexe Similaire à 20091030cakephphandson 01 Similaire à 20091030cakephphandson 01 (20) 20091030cakephphandson 014. 公式サイト
http://www.cakephp.org/
4
17. 注意
セットアップ時に
変更する設定が環境によっ
て異なる場合があります
20. 対処方法(mod_rewriteの設定)
(推奨)httpd.conf を変更し、apache再起動
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so コメント解除
Apacheの設定が変更できない場合は core.php
//Configure::write('App.baseUrl', env('SCRIPT_NAME'));
コメント解除
後者の場合は今後のURLに常にindex.phpを付ける事に
/pages/home → index.php/pages/home
20
22. サンプルデータの登録
CREATE TABLE IF NOT EXISTS `posts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`body` text COLLATE utf8_unicode_ci,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `posts` (`id`, `user_id`, `body`, `created`, `modified`) VALUES
(1, 1, 'これは、記事の本文です。', '2009-10-10 01:06:07', '2009-10-10
01:23:17'),
(2, 1, 'そこに本文が続きます。', '2009-10-10 01:06:07', '2009-10-10
01:23:58'),
(3, 1, 'こりゃ本当に面白そう!うそ。', '2009-10-10 01:06:07', '2009-10-10
01:24:08'),
22
23. 設定ファイル (database.php)の作成
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'matsutter',
文字化け対策
'encoding' => 'utf8',
'prefix' => '',
);
app/config/database.php.default をコピーして作成
23
24. 実習 1-0
ワークショップ用のCakePHP
をセットアップしてみましょう
http://groups.google.co.jp/group/cakematsuri-workshop
PHPが動く場所に設置
app/config/sql/dump.sqlのデータを登録
database.php.defaultをコピーしてパスワード設定
30. Controllerへのアクションの追加
<?php
class PostsController extends AppController {
var $name = 'Posts';
//var $scaffold; //丌要なので消す
function index() {
$this->set('posts', $this->Post->find('all'));
}
}
?> Viewに対してpostsという名前でデータを渡す
Index メソッドを追加した事により、/posts/index へアク
セスされた場合に実行する処理を定義できます
30
36. ViewでControllerのデータを扱う
<?php echo $html->link('つぶやく','/posts/add') ?>
<table>
<tr><th>Id</th><th>user_id</th>
<th>Title</th><th>Created</th></tr>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td><?php echo $post['Post']['user_id']; ?></td>
<td><?php echo $post['Post']['body']; ?></td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
</table>
36
38. 実習 1-3
Modelのデータを表示する
views/posts/index.ctpを修正
新しい画面へのリンクの設置
Controllerから渡した変数のデータ構造に注意
よくわからない時はvar_dump
41. Viewの追加 add.ctp
<h1>Add Post</h1>
<?php
echo $form->create('Post');
echo $form->input(‘user_id');
echo $form->input('body', array('rows' => '3'));
echo $form->end('Save Post');
?>
/posts/add 時の画面を追加
FormHelperでフォームを出力
41
42. validateの追加 post.php
<?php
class Post extends AppModel
{
var $name = 'Post';
var $validate = array(
'body' => array(
'rule' => array('maxLength', 140),
'allowEmpty' => false),
);
}
42
45. 実習 1-4
データ登録機能を作る
views/posts/add.ctp と addアクションを作成
models/post.phpにvalidateの設定を追加
入力チェックの挙動とデータ登録を確認
51. Controllerへの設定追加(抜粋)
<?php
class PostsController extends AppController {
var $name = 'Posts';
var $paginate = array(
'order' => array('Post.id' => 'DESC'),
'limit' => 10
); ソートなどの設定
function index() {
$this->set('posts', $this->paginate('Post'));
}
Paginateメソッドを使う
Modelのfindの代わりにControllerのPaginateを使う
51
54. 実習 1-5
Paginateの組み込み
controllers/posts_controller.phpに設定を追加
views/posts/index.ctp にpaginatorの記述追加
データがページ分けして表示できればOK
58. 実行結果
あとは自由にCSSなどを設定すればOK
Copyright © YusukeAndo. 2009 - . All rights reserved.
59. 素材を適用
大幅にそれっぽくなった
Copyright © YusukeAndo. 2009 - . All rights reserved.
60. 実習 1-6
layoutの組み込み
views/layouts/default.ctpを素材に入れ替える
views/posts/index.ctpを素材に入れ替える
それっぽい表示を確認
63. 質疑応答
ご静聴ありがとうございました。
63